From b68bec1ee4190ea233bca55fe9fb178ea8e58d90 Mon Sep 17 00:00:00 2001 From: Tony Johnson Date: Thu, 15 Feb 2018 14:11:28 -0800 Subject: [PATCH] Moving parelleltoofast files to separate archive branch --- ETU2/paralleltoofast/TS8_ITL_2s_newflush.seq | 350 --------------- .../TS8_ITL_2s_newflush_v2-scan-mode.seq | 351 --------------- .../TS8_ITL_2s_newflush_v2.seq | 351 --------------- .../TS8_ITL_2s_newflush_v2.seq | 351 --------------- .../TS8_ITL_2s_newflush_v3.seq | 362 --------------- RTM10/paralleltoofast/TS8_ITL_2s_camel.seq | 353 --------------- RTM10/paralleltoofast/TS8_ITL_2s_camel_v2.seq | 359 --------------- RTM10/paralleltoofast/TS8_ITL_2s_camel_v3.seq | 357 --------------- RTM10/paralleltoofast/TS8_ITL_RGonly.seq | 364 --------------- .../paralleltoofast/TS8_ITL_injectRD_120.seq | 391 ---------------- .../paralleltoofast/TS8_ITL_injectRD_160.seq | 391 ---------------- .../paralleltoofast/TS8_ITL_injectRD_200.seq | 391 ---------------- .../paralleltoofast/TS8_ITL_injectRD_260.seq | 391 ---------------- .../paralleltoofast/TS8_ITL_injectRD_320.seq | 390 ---------------- RTM10/paralleltoofast/TS8_ITL_iso_300_200.seq | 366 --------------- RTM10/paralleltoofast/TS8_ITL_iso_300_300.seq | 366 --------------- RTM10/paralleltoofast/TS8_ITL_iso_400_200.seq | 366 --------------- .../readtime/TS8_ITL_3s_rc14.seq | 365 --------------- .../readtime/TS8_ITL_3s_rc15.seq | 365 --------------- .../readtime/TS8_ITL_4s_rc2.seq | 365 --------------- .../readtime/TS8_ITL_5s_rc12.seq | 365 --------------- .../paralleltoofast/TS8_E2V_shorterP_scan.seq | 333 -------------- RTM2/paralleltoofast/seq-e2v-2s-fixcte.seq | 362 --------------- .../seq-e2v-2s-fixcte_1clr.seq | 362 --------------- RTM2/paralleltoofast/seq-e2v-2s-newflush.seq | 358 --------------- .../seq-e2v-4s-fixcte_1clr.seq | 363 --------------- .../seq-e2v-shorterp-2s-70ns.txt | 334 -------------- RTM2/paralleltoofast/seq-e2v-shorterp-2s.seq | 333 -------------- .../seq-e2v-shorterp-reset-100ns.seq | 334 -------------- .../seq-e2v-shorterp-reset-90ns.seq | 334 -------------- .../seq-e2v-shorterp-reset.seq | 334 -------------- RTM2/paralleltoofast/seq-e2v-shorterp-v2.seq | 329 -------------- RTM2/paralleltoofast/seq-e2v-shorterp-v3.seq | 333 -------------- RTM2/paralleltoofast/seq-e2v-shorterp.seq | 329 -------------- RTM8/paralleltoofast/TS8_ITL_RGhigh_allS.seq | 363 --------------- .../paralleltoofast/TS8_ITL_RGhigh_longS1.seq | 363 --------------- .../TS8_ITL_RGhigh_longS1_fix.seq | 364 --------------- .../paralleltoofast/TS8_ITL_clockcross100.seq | 363 --------------- .../paralleltoofast/TS8_ITL_clockcross120.seq | 363 --------------- .../paralleltoofast/TS8_ITL_clockcross150.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_clockcross90.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_injectRD.seq | 381 ---------------- RTM8/paralleltoofast/TS8_ITL_injectRD_fix.seq | 390 ---------------- .../paralleltoofast/TS8_ITL_injectRD_scan.seq | 388 ---------------- RTM8/paralleltoofast/TS8_ITL_longS1_scan.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t0.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t1360.seq | 364 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t1440.seq | 364 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t1520.seq | 364 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t1600.seq | 364 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t1780.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t420.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t560.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_longS1_t760.seq | 363 --------------- RTM8/paralleltoofast/TS8_ITL_longsettle.seq | 363 --------------- .../TS8_ITL_longsettle_RGhigh_longS1_scan.seq | 424 ----------------- .../TS8_ITL_longsettle_fixclamp.seq | 364 --------------- .../TS8_ITL_longsettle_longS1.seq | 363 --------------- .../TS8_ITL_longsettle_longS1_fixclamp.seq | 364 --------------- .../TS8_ITL_longsettle_longS1_scan.seq | 424 ----------------- ...S8_ITL_longsettle_longS1_scan_fixclamp.seq | 425 ------------------ .../TS8_ITL_longsettle_scan.seq | 420 ----------------- .../TS8_ITL_longsettle_scan_fixclamp.seq | 421 ----------------- RTM8/paralleltoofast/TS8_ITL_reverse.seq | 381 ---------------- RTM8/paralleltoofast/TS8_ITL_settle_0.seq | 365 --------------- RTM8/paralleltoofast/TS8_ITL_settle_100.seq | 365 --------------- RTM8/paralleltoofast/TS8_ITL_settle_1000.seq | 365 --------------- RTM8/paralleltoofast/TS8_ITL_settle_200.seq | 365 --------------- RTM8/paralleltoofast/TS8_ITL_settle_2000.seq | 365 --------------- RTM8/paralleltoofast/TS8_ITL_settle_400.seq | 365 --------------- RTM8/paralleltoofast/TS8_ITL_settle_700.seq | 365 --------------- .../archive/TS8_ITL_2s_RGfirst.seq | 363 --------------- .../archive/TS8_ITL_2s_bufferP.seq | 363 --------------- .../archive/TS8_ITL_2s_iso1.seq | 362 --------------- .../archive/TS8_ITL_2s_iso2.seq | 363 --------------- .../archive/TS8_ITL_2s_longCL.seq | 363 --------------- .../archive/TS8_ITL_2s_longS1.seq | 362 --------------- .../archive/TS8_ITL_2s_shortRG.seq | 363 --------------- .../archive/TS8_ITL_2s_splitS3.seq | 363 --------------- .../paralleltoofast/archive/TS8_ITL_allRG.seq | 362 --------------- RTM8/paralleltoofast/archive/TS8_ITL_long.seq | 362 --------------- .../paralleltoofast/archive/TS8_ITL_slowP.seq | 362 --------------- .../run2017/TS8_ITL_P_2s_RGfirst.seq | 363 --------------- .../run2017/TS8_ITL_P_2s_bufferP.seq | 363 --------------- .../run2017/TS8_ITL_P_2s_iso1.seq | 362 --------------- .../run2017/TS8_ITL_P_2s_iso2.seq | 363 --------------- .../run2017/TS8_ITL_P_2s_longCL.seq | 363 --------------- .../run2017/TS8_ITL_P_2s_longS1.seq | 362 --------------- .../run2017/TS8_ITL_P_2s_shortRG.seq | 363 --------------- .../run2017/TS8_ITL_P_2s_splitS3.seq | 363 --------------- .../run2017/TS8_ITL_P_allRG.seq | 362 --------------- .../run2017/TS8_ITL_P_long.seq | 362 --------------- .../run2017/TS8_ITL_P_longS1S3.seq | 364 --------------- .../run2017/TS8_ITL_P_slowP.seq | 362 --------------- .../singleclock/TS8_ITL_RGonly.seq | 364 --------------- .../singleclock/TS8_ITL_allS.seq | 364 --------------- .../singleclock/TS8_ITL_singleS1.seq | 364 --------------- .../singleclock/TS8_ITL_singleS2.seq | 364 --------------- .../singleclock/TS8_ITL_singleS3.seq | 364 --------------- 99 files changed, 36147 deletions(-) delete mode 100644 ETU2/paralleltoofast/TS8_ITL_2s_newflush.seq delete mode 100644 ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2-scan-mode.seq delete mode 100644 ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2.seq delete mode 100644 RTM1/paralleltoofast/TS8_ITL_2s_newflush_v2.seq delete mode 100644 RTM1/paralleltoofast/TS8_ITL_2s_newflush_v3.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_2s_camel.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_2s_camel_v2.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_2s_camel_v3.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_RGonly.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_injectRD_120.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_injectRD_160.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_injectRD_200.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_injectRD_260.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_injectRD_320.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_iso_300_200.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_iso_300_300.seq delete mode 100644 RTM10/paralleltoofast/TS8_ITL_iso_400_200.seq delete mode 100644 RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc14.seq delete mode 100644 RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc15.seq delete mode 100644 RTM10/paralleltoofast/readtime/TS8_ITL_4s_rc2.seq delete mode 100644 RTM10/paralleltoofast/readtime/TS8_ITL_5s_rc12.seq delete mode 100644 RTM2/paralleltoofast/TS8_E2V_shorterP_scan.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-2s-fixcte.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-2s-fixcte_1clr.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-2s-newflush.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-4s-fixcte_1clr.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp-2s-70ns.txt delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp-2s.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp-reset-100ns.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp-reset-90ns.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp-reset.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp-v2.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp-v3.seq delete mode 100644 RTM2/paralleltoofast/seq-e2v-shorterp.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_RGhigh_allS.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1_fix.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_clockcross100.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_clockcross120.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_clockcross150.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_clockcross90.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_injectRD.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_injectRD_fix.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_injectRD_scan.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_scan.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t0.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t1360.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t1440.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t1520.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t1600.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t1780.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t420.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t560.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longS1_t760.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_RGhigh_longS1_scan.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_fixclamp.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_longS1.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_fixclamp.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan_fixclamp.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_scan.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_longsettle_scan_fixclamp.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_reverse.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_settle_0.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_settle_100.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_settle_1000.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_settle_200.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_settle_2000.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_settle_400.seq delete mode 100644 RTM8/paralleltoofast/TS8_ITL_settle_700.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_RGfirst.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_bufferP.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_iso1.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_iso2.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_longCL.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_longS1.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_shortRG.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_2s_splitS3.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_allRG.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_long.seq delete mode 100644 RTM8/paralleltoofast/archive/TS8_ITL_slowP.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_RGfirst.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_bufferP.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso1.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso2.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longCL.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longS1.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_shortRG.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_splitS3.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_allRG.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_long.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_longS1S3.seq delete mode 100644 RTM8/paralleltoofast/run2017/TS8_ITL_P_slowP.seq delete mode 100644 RTM8/paralleltoofast/singleclock/TS8_ITL_RGonly.seq delete mode 100644 RTM8/paralleltoofast/singleclock/TS8_ITL_allS.seq delete mode 100644 RTM8/paralleltoofast/singleclock/TS8_ITL_singleS1.seq delete mode 100644 RTM8/paralleltoofast/singleclock/TS8_ITL_singleS2.seq delete mode 100644 RTM8/paralleltoofast/singleclock/TS8_ITL_singleS3.seq diff --git a/ETU2/paralleltoofast/TS8_ITL_2s_newflush.seq b/ETU2/paralleltoofast/TS8_ITL_2s_newflush.seq deleted file mode 100644 index 342f02e..0000000 --- a/ETU2/paralleltoofast/TS8_ITL_2s_newflush.seq +++ /dev/null @@ -1,350 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 0 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2, SHU - slices: - BufferP = 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 1, 1, 1, 0 - TimeP = 0, 0, 1, 1, 1, 0 - TimeP = 1, 0, 1, 1, 1, 0 - TimeP = 1, 0, 0, 1, 1, 0 - TimeP = 1, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only -# JSR ClearCCD repeat(@CleaningNumber) - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump - JSR CloseShutter - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Single clear only - JSR ClearCCD repeat(1) - END diff --git a/ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2-scan-mode.seq b/ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2-scan-mode.seq deleted file mode 100644 index 3e64487..0000000 --- a/ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2-scan-mode.seq +++ /dev/null @@ -1,351 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 100 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 256 # Number of columns to read - REP_FUNC PostCols 220 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 48 # Number of rows to skip before window - REP_SUBR ReadRows 1000 # Number of rows of the window - REP_SUBR PostRows 1000 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2, SHU - slices: - BufferP = 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 1, 1, 1, 0 - TimeP = 0, 0, 1, 1, 1, 0 - TimeP = 1, 0, 1, 1, 1, 0 - TimeP = 1, 0, 0, 1, 1, 0 - TimeP = 1, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only -# JSR ClearCCD repeat(@CleaningNumber) - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump - JSR CloseShutter - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Single clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2.seq b/ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2.seq deleted file mode 100644 index 03fcf90..0000000 --- a/ETU2/paralleltoofast/TS8_ITL_2s_newflush_v2.seq +++ /dev/null @@ -1,351 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2, SHU - slices: - BufferP = 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 1, 1, 1, 0 - TimeP = 0, 0, 1, 1, 1, 0 - TimeP = 1, 0, 1, 1, 1, 0 - TimeP = 1, 0, 0, 1, 1, 0 - TimeP = 1, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only -# JSR ClearCCD repeat(@CleaningNumber) - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump - JSR CloseShutter - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Single clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM1/paralleltoofast/TS8_ITL_2s_newflush_v2.seq b/RTM1/paralleltoofast/TS8_ITL_2s_newflush_v2.seq deleted file mode 100644 index 03fcf90..0000000 --- a/RTM1/paralleltoofast/TS8_ITL_2s_newflush_v2.seq +++ /dev/null @@ -1,351 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2, SHU - slices: - BufferP = 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 1, 1, 1, 0 - TimeP = 0, 0, 1, 1, 1, 0 - TimeP = 1, 0, 1, 1, 1, 0 - TimeP = 1, 0, 0, 1, 1, 0 - TimeP = 1, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only -# JSR ClearCCD repeat(@CleaningNumber) - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump - JSR CloseShutter - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Single clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM1/paralleltoofast/TS8_ITL_2s_newflush_v3.seq b/RTM1/paralleltoofast/TS8_ITL_2s_newflush_v3.seq deleted file mode 100644 index dff3ba7..0000000 --- a/RTM1/paralleltoofast/TS8_ITL_2s_newflush_v3.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_2s_camel.seq b/RTM10/paralleltoofast/TS8_ITL_2s_camel.seq deleted file mode 100644 index a4694c4..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_2s_camel.seq +++ /dev/null @@ -1,353 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: TS8_ITL_2s_newflush_v3.seq -# 20180202, C.J.: modified readout sequence to replicate STA Archon readout - -# this file is made for an RC time constant of 450 ns (integration time 480 ns), RC should be set to 0b1001 (0x9) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 160 ns # Base element of serial transfers - BufferS: 190 ns # Buffer after RG - TimeC: 190 ns # clamp time - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 160 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - 80 ns = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - 110 ns = 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - TimeS = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - TimeS = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 - TimeS = 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 1, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_2s_camel_v2.seq b/RTM10/paralleltoofast/TS8_ITL_2s_camel_v2.seq deleted file mode 100644 index 6d01376..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_2s_camel_v2.seq +++ /dev/null @@ -1,359 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: TS8_ITL_2s_newflush_v3.seq -# 20180202, C.J.: modified readout sequence to replicate STA Archon readout - -# this file is made for an RC time constant of 450 ns (integration time 480 ns), RC should be set to 0b1001 (0x9) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 200 ns # Time between ASPIC ramps - TimeS: 160 ns # Base element of serial transfers - BufferS: 190 ns # Buffer after RG - BufferF: 30 ns # Buffer between clock signal and actual fall - BufferR: 50 ns # Buffer between clock signal and actual rise - TimeC: 180 ns # clamp time - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - 80 ns = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - 110 ns = 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - BufferF = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - 130 ns = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - TimeS = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - TimeS = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferF = 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - BufferF = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 130 ns = 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 - BufferF = 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 1, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_2s_camel_v3.seq b/RTM10/paralleltoofast/TS8_ITL_2s_camel_v3.seq deleted file mode 100644 index 621886e..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_2s_camel_v3.seq +++ /dev/null @@ -1,357 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: TS8_ITL_2s_newflush_v3.seq -# 20180202, C.J.: modified readout sequence to replicate STA Archon readout - -# this file is made for an RC time constant of 450 ns (integration time 480 ns), RC should be set to 0b1001 (0x9) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 200 ns # Time between ASPIC ramps - TimeS: 160 ns # Base element of serial transfers - BufferS: 90 ns # Overlap in flush - BufferF: 30 ns # Buffer between clock signal and actual fall - BufferR: 50 ns # Buffer between clock signal and actual rise - TimeC: 180 ns # clamp time - FlushS: 480 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - 80 ns = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - 110 ns = 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - BufferF = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - 200 ns = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - 250 ns = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferF = 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - BufferF = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 130 ns = 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 - 320 ns = 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 - BufferF = 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 0, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 1, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_RGonly.seq b/RTM10/paralleltoofast/TS8_ITL_RGonly.seq deleted file mode 100644 index df905fa..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_RGonly.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20171120, C.J.: activating RG only for noise measurement - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read, with single clock actually moving - clocks: RG, S2, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 0, 0, 0, 0, 0 - 200 ns = 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_injectRD_120.seq b/RTM10/paralleltoofast/TS8_ITL_injectRD_120.seq deleted file mode 100644 index 11ad0d7..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_injectRD_120.seq +++ /dev/null @@ -1,391 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel -# 20180202, C.J.: series with shorter integration times to measure jitter - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 380 ns # Time between ASPIC clamp and first ramp - ISO2: 540 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 120 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(512) - CALL ReadFlat repeat(64) - CALL FastFlushPixel repeat(@PostCols) - RTS - - FlatLine: # Line readout with RG high - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadFlat repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(2000) - JSR FlatLine repeat(48) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_injectRD_160.seq b/RTM10/paralleltoofast/TS8_ITL_injectRD_160.seq deleted file mode 100644 index 815393d..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_injectRD_160.seq +++ /dev/null @@ -1,391 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel -# 20180202, C.J.: series with shorter integration times to measure jitter - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 340 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 160 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(512) - CALL ReadFlat repeat(64) - CALL FastFlushPixel repeat(@PostCols) - RTS - - FlatLine: # Line readout with RG high - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadFlat repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(2000) - JSR FlatLine repeat(48) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_injectRD_200.seq b/RTM10/paralleltoofast/TS8_ITL_injectRD_200.seq deleted file mode 100644 index fe40456..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_injectRD_200.seq +++ /dev/null @@ -1,391 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel -# 20180202, C.J.: series with shorter integration times to measure jitter - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 300 ns # Time between ASPIC clamp and first ramp - ISO2: 460 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 200 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(512) - CALL ReadFlat repeat(64) - CALL FastFlushPixel repeat(@PostCols) - RTS - - FlatLine: # Line readout with RG high - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadFlat repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(2000) - JSR FlatLine repeat(48) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_injectRD_260.seq b/RTM10/paralleltoofast/TS8_ITL_injectRD_260.seq deleted file mode 100644 index 9374d5a..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_injectRD_260.seq +++ /dev/null @@ -1,391 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel -# 20180202, C.J.: series with shorter integration times to measure jitter - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 240 ns # Time between ASPIC clamp and first ramp - ISO2: 400 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 260 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(512) - CALL ReadFlat repeat(64) - CALL FastFlushPixel repeat(@PostCols) - RTS - - FlatLine: # Line readout with RG high - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadFlat repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(2000) - JSR FlatLine repeat(48) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_injectRD_320.seq b/RTM10/paralleltoofast/TS8_ITL_injectRD_320.seq deleted file mode 100644 index bd16d83..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_injectRD_320.seq +++ /dev/null @@ -1,390 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(512) - CALL ReadFlat repeat(64) - CALL FastFlushPixel repeat(@PostCols) - RTS - - FlatLine: # Line readout with RG high - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadFlat repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(2000) - JSR FlatLine repeat(48) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_iso_300_200.seq b/RTM10/paralleltoofast/TS8_ITL_iso_300_200.seq deleted file mode 100644 index cffb738..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_iso_300_200.seq +++ /dev/null @@ -1,366 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns -# 20180131, C.J.: test adding different extra times to ISO1 and ISO2 - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 480 ns # Time between ASPIC clamp and first ramp - ISO2: 540 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_iso_300_300.seq b/RTM10/paralleltoofast/TS8_ITL_iso_300_300.seq deleted file mode 100644 index 57fc61e..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_iso_300_300.seq +++ /dev/null @@ -1,366 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns -# 20180131, C.J.: test adding different extra times to ISO1 and ISO2 - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 480 ns # Time between ASPIC clamp and first ramp - ISO2: 640 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/TS8_ITL_iso_400_200.seq b/RTM10/paralleltoofast/TS8_ITL_iso_400_200.seq deleted file mode 100644 index e01a1b0..0000000 --- a/RTM10/paralleltoofast/TS8_ITL_iso_400_200.seq +++ /dev/null @@ -1,366 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns -# 20180131, C.J.: test adding different extra times to ISO1 and ISO2 - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 580 ns # Time between ASPIC clamp and first ramp - ISO2: 540 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc14.seq b/RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc14.seq deleted file mode 100644 index 51f2fdb..0000000 --- a/RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc14.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns, removed BufferP (there is time from the last pixel read) - -# file is designed to test noise versus readout time - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 330 ns # Time between ASPIC clamp and first ramp - ISO2: 460 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - BufferF: 90 ns # Buffer for flush serial clock crossing - do not change - FlushS: 480 ns # Base element of serial flush - RampTime: 610 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferF = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferF = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc15.seq b/RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc15.seq deleted file mode 100644 index ee648d3..0000000 --- a/RTM10/paralleltoofast/readtime/TS8_ITL_3s_rc15.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns, removed BufferP (there is time from the last pixel read) - -# file is designed to test noise versus readout time - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 620 ns # Time between ASPIC clamp and first ramp - ISO2: 750 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - BufferF: 90 ns # Buffer for flush serial clock crossing - do not change - FlushS: 480 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferF = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferF = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/readtime/TS8_ITL_4s_rc2.seq b/RTM10/paralleltoofast/readtime/TS8_ITL_4s_rc2.seq deleted file mode 100644 index 6e8f2dc..0000000 --- a/RTM10/paralleltoofast/readtime/TS8_ITL_4s_rc2.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns, removed BufferP (there is time from the last pixel read) - -# file is designed to test noise versus readout time - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 420 ns # Time between ASPIC clamp and first ramp - ISO2: 550 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - BufferF: 90 ns # Buffer for flush serial clock crossing - do not change - FlushS: 480 ns # Base element of serial flush - RampTime: 970 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferF = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferF = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM10/paralleltoofast/readtime/TS8_ITL_5s_rc12.seq b/RTM10/paralleltoofast/readtime/TS8_ITL_5s_rc12.seq deleted file mode 100644 index 14cc0a8..0000000 --- a/RTM10/paralleltoofast/readtime/TS8_ITL_5s_rc12.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns, removed BufferP (there is time from the last pixel read) - -# file is designed to test noise versus readout time - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 530 ns # Time between ASPIC clamp and first ramp - ISO2: 680 ns # Time between ASPIC ramps - TimeS: 160 ns # Base element of serial transfers - BufferS: 100 ns # Buffer for serial clock crossing - BufferF: 90 ns # Buffer for flush serial clock crossing - do not change - FlushS: 480 ns # Base element of serial flush - RampTime: 1280 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferF = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferF = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferF = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferF = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferF = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferF = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM2/paralleltoofast/TS8_E2V_shorterP_scan.seq b/RTM2/paralleltoofast/TS8_E2V_shorterP_scan.seq deleted file mode 100644 index b716ae7..0000000 --- a/RTM2/paralleltoofast/TS8_E2V_shorterP_scan.seq +++ /dev/null @@ -1,333 +0,0 @@ -# REB timing for E2V CCD -# new baseline sequencer at LPNHE with overlap in parallel clocks -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt -# 20170407 C.J: modified Mains for TS8 -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505 C.J.: taken changes from TS8 run and formatted for scanning - -# NOTE that the RampTime is 320 ns to (nearly) reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 300 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 100 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 256 # Number of columns to read - REP_FUNC PostCols 220 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 48 # Number of rows to skip before window - REP_SUBR ReadRows 1000 # Number of rows of the window - REP_SUBR PostRows 1000 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 0 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST, SHU - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4, SHU - slices: - BufferP = 0, 1, 1, 0, 0 - OverlapP = 0, 1, 1, 1, 0 - TimeP = 0, 0, 1, 1, 0 - OverlapP = 1, 0, 1, 1, 0 - TimeP = 1, 0, 0, 1, 0 - OverlapP = 1, 1, 0, 1, 0 - TimeP = 1, 1, 0, 0, 0 - OverlapP = 1, 1, 1, 0, 0 - TimeP = 0, 1, 1, 0, 0 - 5000 ns = 0, 1, 1, 0, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 50 ns = 1, 0, 1, 0, 0, 0, 0, 0, 1, 0 - 150 ns = 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3, SHU - slices: - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 0, 1, 0 - BufferS = 0, 1, 0, 1, 0 - FlushS = 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3, SHU - slices: - FlushS = 1, 0, 1, 0, 1 - BufferS = 1, 0, 1, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 0, 1 - BufferS = 1, 1, 1, 0, 1 - constants: P2=1, P3=1, RST=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms -# CALL @Exposure repeat(13441) - CALL @Exposure repeat(13216) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-2s-fixcte.seq b/RTM2/paralleltoofast/seq-e2v-2s-fixcte.seq deleted file mode 100644 index 1202df3..0000000 --- a/RTM2/paralleltoofast/seq-e2v-2s-fixcte.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407, C.J.: modified Mains for TS8 -# 20170414, C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426, C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505, C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170516, C.J.: shortened CCD reset to reach nominal readout time, now using TimeS parameter -# 20170724, C.J.: introduced flushing by bursts during exposure, keeping the naming conventions for ExposureFlush, ExposureNoFlush, -# SerialFlush, DarkNoFlush but turning them into subroutines. FlushPixel, FlushPixelOpen, NoFlushPixel, NoFlushPixelOpen replace -# them as functions. Set their duration to 1790 ns to match ReadPixel. -# 20170914, C.J: increased BufferS2S3 and decreased TimeS/BufferS3 of ReadPixel to fix serial CTI. -# This puts ReadPixel at 1810 ns, but kept matching functions to 1790 ns for now. - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 140 ns # Base element of serial transfers (minimal time for single clock phase up) - BufferS: 80 ns # Buffer for serial clock crossing - BufferS2S3: 140 ns # Longer buffer for S2S3 serial clock crossing - BufferS3: 60 ns # Shorter buffer for S3 alone to compensate - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 500 ns # Base element for flushing the serial register (set to match ReadPixel) - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read (set at 532 for nominal readout time) - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window (set at 2012 for nominal readout time) - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 0 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_SUBR Exposure ExposureFlush # Elementary subroutine to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_SUBR EExposure ExposureFlush # Elementary subroutine to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - TimeS = 1, 0, 1, 0, 0, 0, 0, 0, 1 - BufferS2S3 = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS3 = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - FlushPixel: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same timing as FlushPixel - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - NoFlushPixel: # Dark without flushing serial register, same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - NoFlushPixelOpen: # Exposure without flushing serial register (testing only), same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - ExposureNoFlush: # Elementary exposure without flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - DarkNoFlush: # Elementary dark without flushing, 25 ms duration - CALL NoFlushPixel repeat(13966) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame -# JSR CloseShutter # this is not needed (included in ExposeFrame) - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-2s-fixcte_1clr.seq b/RTM2/paralleltoofast/seq-e2v-2s-fixcte_1clr.seq deleted file mode 100644 index 7e90a45..0000000 --- a/RTM2/paralleltoofast/seq-e2v-2s-fixcte_1clr.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407, C.J.: modified Mains for TS8 -# 20170414, C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426, C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505, C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170516, C.J.: shortened CCD reset to reach nominal readout time, now using TimeS parameter -# 20170724, C.J.: introduced flushing by bursts during exposure, keeping the naming conventions for ExposureFlush, ExposureNoFlush, -# SerialFlush, DarkNoFlush but turning them into subroutines. FlushPixel, FlushPixelOpen, NoFlushPixel, NoFlushPixelOpen replace -# them as functions. Set their duration to 1790 ns to match ReadPixel. -# 20170914, C.J: increased BufferS2S3 and decreased TimeS/BufferS3 of ReadPixel to fix serial CTI. -# This puts ReadPixel at 1810 ns, but kept matching functions to 1790 ns for now. - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 140 ns # Base element of serial transfers (minimal time for single clock phase up) - BufferS: 80 ns # Buffer for serial clock crossing - BufferS2S3: 140 ns # Longer buffer for S2S3 serial clock crossing - BufferS3: 60 ns # Shorter buffer for S3 alone to compensate - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 500 ns # Base element for flushing the serial register (set to match ReadPixel) - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read (set at 532 for nominal readout time) - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window (set at 2012 for nominal readout time) - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_SUBR Exposure ExposureFlush # Elementary subroutine to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_SUBR EExposure ExposureFlush # Elementary subroutine to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - TimeS = 1, 0, 1, 0, 0, 0, 0, 0, 1 - BufferS2S3 = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS3 = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - FlushPixel: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same timing as FlushPixel - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - NoFlushPixel: # Dark without flushing serial register, same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - NoFlushPixelOpen: # Exposure without flushing serial register (testing only), same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - ExposureNoFlush: # Elementary exposure without flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - DarkNoFlush: # Elementary dark without flushing, 25 ms duration - CALL NoFlushPixel repeat(13966) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-2s-newflush.seq b/RTM2/paralleltoofast/seq-e2v-2s-newflush.seq deleted file mode 100644 index b90f64f..0000000 --- a/RTM2/paralleltoofast/seq-e2v-2s-newflush.seq +++ /dev/null @@ -1,358 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407, C.J.: modified Mains for TS8 -# 20170414, C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426, C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505, C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170516, C.J.: shortened CCD reset to reach nominal readout time, now using TimeS parameter -# 20170724, C.J.: introduced flushing by bursts during exposure, keeping the naming conventions for ExposureFlush, ExposureNoFlush, -# SerialFlush, DarkNoFlush but turning them into subroutines. FlushPixel, FlushPixelOpen, NoFlushPixel, NoFlushPixelOpen replace -# them as functions. Set their duration to 1790 ns to match ReadPixel. - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 160 ns # Base element of serial transfers (minimal time for single clock phase up) - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 500 ns # Base element for flushing the serial register (set to match ReadPixel) - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read (set at 532 for nominal readout time) - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window (set at 2012 for nominal readout time) - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 0 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_SUBR Exposure ExposureFlush # Elementary subroutine to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_SUBR EExposure ExposureFlush # Elementary subroutine to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - TimeS = 1, 0, 1, 0, 0, 0, 0, 0, 1 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - FlushPixel: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same timing as FlushPixel - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - NoFlushPixel: # Dark without flushing serial register, same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - NoFlushPixelOpen: # Exposure without flushing serial register (testing only), same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - ExposureNoFlush: # Elementary exposure without flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - DarkNoFlush: # Elementary dark without flushing, 25 ms duration - CALL NoFlushPixel repeat(13966) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-4s-fixcte_1clr.seq b/RTM2/paralleltoofast/seq-e2v-4s-fixcte_1clr.seq deleted file mode 100644 index 4caab74..0000000 --- a/RTM2/paralleltoofast/seq-e2v-4s-fixcte_1clr.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407, C.J.: modified Mains for TS8 -# 20170414, C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426, C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505, C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170516, C.J.: shortened CCD reset to reach nominal readout time, now using TimeS parameter -# 20170724, C.J.: introduced flushing by bursts during exposure, keeping the naming conventions for ExposureFlush, ExposureNoFlush, -# SerialFlush, DarkNoFlush but turning them into subroutines. FlushPixel, FlushPixelOpen, NoFlushPixel, NoFlushPixelOpen replace -# them as functions. Set their duration to 1790 ns to match ReadPixel. -# 20170914, C.J: increased BufferS2S3 and decreased TimeS/BufferS3 of ReadPixel to fix serial CTI. -# This puts ReadPixel at 1810 ns, but kept matching functions to 1790 ns for now. -# 20171213, C.J.: modified for 4s readout time (for CTE tests): kept RampTime, increased other slices, moved trigger to end of pixel and adapted line subroutines - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - TimeS: 200 ns # Base element of serial transfers (minimal time for single clock phase up) - BufferS: 80 ns # Buffer for serial clock crossing - BufferS2S3: 200 ns # Longer buffer for S2S3 serial clock crossing - BufferS3: 200 ns # Buffer for S3 alone - RampTime: 320 ns # ASPIC ramp time - TimeC: 500 ns # ASPIC Clamp time - ISO1: 500 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 500 ns # Base element for flushing the serial register (set to match ReadPixel) - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read (set at 532 for nominal readout time) - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window (set at 2012 for nominal readout time) - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_SUBR Exposure ExposureFlush # Elementary subroutine to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_SUBR EExposure ExposureFlush # Elementary subroutine to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - TimeS = 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS2S3 = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS3 = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - 300 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0 - 300 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - FlushPixel: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same timing as FlushPixel - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - 50 ns = 1, 0, 0, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - NoFlushPixel: # Dark without flushing serial register, same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - NoFlushPixelOpen: # Exposure without flushing serial register (testing only), same timing as FlushPixel, all clocks high to clear serial register - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - 50 ns = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - ExposureNoFlush: # Elementary exposure without flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - DarkNoFlush: # Elementary dark without flushing, 25 ms duration - CALL NoFlushPixel repeat(13966) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp-2s-70ns.txt b/RTM2/paralleltoofast/seq-e2v-shorterp-2s-70ns.txt deleted file mode 100644 index 6a8fc44..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp-2s-70ns.txt +++ /dev/null @@ -1,334 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505: C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170516 C.J.: shortened CCD reset to reach nominal readout time, now using TimeS parameter -# 20170630 C.J.: shortened serial overlaps BufferS to 70 ns, adapted FlushS times to keep flush duration constant - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 160 ns # Base element of serial transfers (minimal time for single clock phase up) - BufferS: 70 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 550 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read (set at 532 for nominal readout time) - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window (set at 2012 for nominal readout time) - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - TimeS = 1, 0, 1, 0, 0, 0, 0, 0, 1 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0 - 90 ns = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13441) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp-2s.seq b/RTM2/paralleltoofast/seq-e2v-shorterp-2s.seq deleted file mode 100644 index eb12ee3..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp-2s.seq +++ /dev/null @@ -1,333 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505: C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170516 C.J.: shortened CCD reset to reach nominal readout time, now using TimeS parameter - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 160 ns # Base element of serial transfers (minimal time for single clock phase up) - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read (set at 532 for nominal readout time) - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window (set at 2012 for nominal readout time) - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 0 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - TimeS = 1, 0, 1, 0, 0, 0, 0, 0, 1 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13441) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp-reset-100ns.seq b/RTM2/paralleltoofast/seq-e2v-shorterp-reset-100ns.seq deleted file mode 100644 index c3cadec..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp-reset-100ns.seq +++ /dev/null @@ -1,334 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505: C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170623: C.J.: increased ASPIC clamp, ASPIC reset and CCD reset, and serial clock overlap to 100 ns - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 300 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 250 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - 100 ns = 1, 0, 1, 0, 0, 0, 0, 0, 1 - 100 ns = 1, 0, 1, 0, 0, 1, 0, 0, 0 - 100 ns = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - 100 ns = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - 100 ns = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13216) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp-reset-90ns.seq b/RTM2/paralleltoofast/seq-e2v-shorterp-reset-90ns.seq deleted file mode 100644 index bacf9e1..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp-reset-90ns.seq +++ /dev/null @@ -1,334 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505: C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170623: C.J.: increased ASPIC clamp, ASPIC reset and CCD reset, and serial clock overlap to 90 ns - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 300 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 250 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - 100 ns = 1, 0, 1, 0, 0, 0, 0, 0, 1 - 100 ns = 1, 0, 1, 0, 0, 1, 0, 0, 0 - 90 ns = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - 90 ns = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - 90 ns = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13216) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp-reset.seq b/RTM2/paralleltoofast/seq-e2v-shorterp-reset.seq deleted file mode 100644 index a93153f..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp-reset.seq +++ /dev/null @@ -1,334 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505: C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush -# 20170623: C.J.: increased ASPIC clamp, ASPIC reset and CCD reset - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 300 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 250 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - 100 ns = 1, 0, 1, 0, 0, 0, 0, 0, 1 - 100 ns = 1, 0, 1, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13216) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp-v2.seq b/RTM2/paralleltoofast/seq-e2v-shorterp-v2.seq deleted file mode 100644 index a0dda6d..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp-v2.seq +++ /dev/null @@ -1,329 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time, now also for parallel flush - TimeS: 300 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - BufferP = 0, 0, 1, 1 - BufferP = 1, 0, 0, 1 - BufferP = 1, 1, 0, 0 - BufferP = 0, 1, 1, 0 - BufferP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - 50 ns = 1, 0, 1, 0, 0, 0, 0, 0, 1 - 150 ns = 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4600 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4600 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13216) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR CloseShutter - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp-v3.seq b/RTM2/paralleltoofast/seq-e2v-shorterp-v3.seq deleted file mode 100644 index bdcfaa7..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp-v3.seq +++ /dev/null @@ -1,333 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing -# 20170505: C.J.: fixed first pixel transfer, added FlushP parameter specific to fast flush - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - TimeS: 300 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - FlushP = 0, 1, 1, 0 - FlushP = 0, 0, 1, 1 - FlushP = 1, 0, 0, 1 - FlushP = 1, 1, 0, 0 - FlushP = 0, 1, 1, 0 - FlushP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - 50 ns = 1, 0, 1, 0, 0, 0, 0, 0, 1 - 150 ns = 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4800 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4800 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL SerialFlush repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13216) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM2/paralleltoofast/seq-e2v-shorterp.seq b/RTM2/paralleltoofast/seq-e2v-shorterp.seq deleted file mode 100644 index 8456af8..0000000 --- a/RTM2/paralleltoofast/seq-e2v-shorterp.seq +++ /dev/null @@ -1,329 +0,0 @@ -# REB timing for E2V CCD -# -# 20170119, C. Juramy: initialized from seq-newflush-overp.txt (new baseline sequencer at LPNHE with overlap in parallel clocks) -# 20170407 C.J.: modified Mains for TS8 -# 20170414 C.J.: increased parallel transfer times (TimeP and OverlapP) and decreased pixel time to match ITL at 2s read time -# 20170426 C.J.: decreased parallel transfer times again to match new file from E2V that clears up the new tearing - -# NOTE that the RampTime is 320 ns to reach LSST readout times -# so the ASPIC RC parameters should be set to 15 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2002 # Number of rows of the sensor - SegCols: 512 # Number of columns of the sensors - SerCols: 522 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 4000 ns # Base time element of parallel transfers - OverlapP: 1000 ns # Overlap at three phases in parallel transfer - BufferP: 2500 ns # Parallel transfer buffer time, now also for parallel flush - TimeS: 300 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - RampTime: 320 ns # ASPIC ramp time - TimeC: 220 ns # ASPIC Clamp time - ISO1: 130 ns # Time between end of ASPIC clamp/reset and start of RD - ISO2: 320 ns # Time between S3 down and start of ASPIC RU - FlushS: 540 ns # Base element for flushing the serial register - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - ElemExposure: 25 ms # Duration of the elementary exposure subroutine - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total - # columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - PTR_FUNC Exposure ExposureFlush # Function to use during exposure: SerialFlush or ExposureFlush - # or ExposureNoFlush or DarkNoFlush - PTR_FUNC EExposure ExposureFlush # Function to use during exposure (SerialFlush or ExposureFlush) - REP_FUNC FlushTime 50000 # Repetitions of SerialFlush function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - -[functions] - Default: # Default state when not operating - clocks: P2, P3, S1, S2, RG, CL, RST - slices: - 1 us = 1, 1, 1, 1, 1, 1, 1 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 0, 1, 1, 0 - 5000 ns = 0, 1, 1, 0 # made it longer to match e2v timing - constants: S1=1, S2=1 - - ReverseLine: # Single line transfer in reverse direction - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - OverlapP = 1, 1, 1, 0 - TimeP = 1, 1, 0, 0 - OverlapP = 1, 1, 0, 1 - TimeP = 1, 0, 0, 1 - OverlapP = 1, 0, 1, 1 - TimeP = 0, 0, 1, 1 - OverlapP = 0, 1, 1, 1 - TimeP = 0, 1, 1, 0 - constants: S1=1, S2=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3, P4 - slices: - BufferP = 0, 1, 1, 0 - BufferP = 0, 0, 1, 1 - BufferP = 1, 0, 0, 1 - BufferP = 1, 1, 0, 0 - BufferP = 0, 1, 1, 0 - BufferP = 0, 1, 1, 0 # doubled to match E2V timing - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG - slices: - 50 ns = 1, 0, 1, 0, 0, 0, 0, 0, 1 - 150 ns = 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 1, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0 - constants: P2=1, P3=1 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI - slices: - 4600 ns = 0 # lets ADC finish previous conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI - slices: - 4600 ns = 0 # lets ADC finish conversion and transfer - 100 ns = 1 - 100 ns = 0 - constants: P2=1, P3=1, S1=1, S2=1, RG=1 - - SerialFlush: # Single pixel flush with timing set by FlushS parameter - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 0, 0, 0, 1 - BufferS = 0, 1, 0, 1 - FlushS = 0, 1, 0, 0 - BufferS = 0, 1, 1, 0 - constants: P2=1, P3=1, RST=1 - - ExposureFlush: # Exposure while flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 0, 1, 0 - BufferS = 1, 0, 1, 1 - FlushS = 1, 0, 0, 1 - BufferS = 1, 1, 0, 1 - FlushS = 1, 1, 0, 0 - BufferS = 1, 1, 1, 0 - constants: P2=1, P3=1, RST=1, SHU=1 - - DarkNoFlush: # Dark without flushing serial register, same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1 - - ExposureNoFlush: # Exposure without flushing serial register (testing only), same timing as SerialFlushReg - clocks: RG, S1, S2, S3 - slices: - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - FlushS = 1, 1, 1, 1 - BufferS = 1, 1, 1, 1 - constants: P2=1, P3=1, RST=1, SHU=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3, P4 - slices: - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 1, 0 - TimeP = 0, 1, 0, 0, 0, 1, 1, 0 - TimeP = 1, 0, 1, 0, 0, 1, 1, 0 - 80000 ns = 1, 0, 1, 0, 0, 0, 1, 1 - 80000 ns = 1, 0, 1, 0, 1, 0, 0, 1 - 80000 ns = 1, 0, 1, 0, 1, 1, 0, 0 - 80000 ns = 0, 0, 1, 0, 0, 1, 1, 0 - constants: CL=1, RST=1 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it pixel by pixel - CALL TransferLine - CALL SerialFlush repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL SerialFlush repeat(@PreCols) - CALL ReadPixel repeat(@ReadCols) - CALL SerialFlush repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL SerialFlush repeat(50000) - RTS - - FlushRegister: # Flushing serial register from accumulated charges (solving E2V DC issue) - CALL SerialFlush repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - - Exposure25ms: # Repeat exposure function for 25 ms - CALL @Exposure repeat(13441) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - - -[mains] - Bias: # Bias after clearing up CCD content - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # One acquisition exposure - JSR ExposeFrame - END - - PocketPump: # One acquisition followed by pocket pumping - JSR ExposeFrame - JSR CloseShutter - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # Clear - JSR ClearCCD repeat(@CleaningNumber) - END - - \ No newline at end of file diff --git a/RTM8/paralleltoofast/TS8_ITL_RGhigh_allS.seq b/RTM8/paralleltoofast/TS8_ITL_RGhigh_allS.seq deleted file mode 100644 index 94c3f44..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_RGhigh_allS.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180110, C.J.: test for scan with RG high all the time during readout and clocks working as usual - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1.seq b/RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1.seq deleted file mode 100644 index 302a09c..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180112, C.J.: test for scan with RG high all the time during readout and clocks with S1 up during RD and RU - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5180 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1_fix.seq b/RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1_fix.seq deleted file mode 100644 index c04823b..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_RGhigh_longS1_fix.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180112, C.J.: test for scan with RG high all the time during readout and clocks with S1 up during RD and RU -# 20180119, C.J.: fixed ISO1 and ISO2 - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_clockcross100.seq b/RTM8/paralleltoofast/TS8_ITL_clockcross100.seq deleted file mode 100644 index 3ade861..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_clockcross100.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: testing longer crossings between serial clocks - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 100 ns # Buffer for serial clock crossing - FlushS: 470 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_clockcross120.seq b/RTM8/paralleltoofast/TS8_ITL_clockcross120.seq deleted file mode 100644 index 150a249..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_clockcross120.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: testing longer crossings between serial clocks - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 120 ns # Buffer for serial clock crossing - FlushS: 450 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_clockcross150.seq b/RTM8/paralleltoofast/TS8_ITL_clockcross150.seq deleted file mode 100644 index 0e1e178..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_clockcross150.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: testing longer crossings between serial clocks - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 150 ns # Buffer for serial clock crossing - FlushS: 420 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_clockcross90.seq b/RTM8/paralleltoofast/TS8_ITL_clockcross90.seq deleted file mode 100644 index c6aa823..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_clockcross90.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: testing longer crossings between serial clocks - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 480 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_injectRD.seq b/RTM8/paralleltoofast/TS8_ITL_injectRD.seq deleted file mode 100644 index 287b806..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_injectRD.seq +++ /dev/null @@ -1,381 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(512) - CALL ReadFlat repeat(64) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_injectRD_fix.seq b/RTM8/paralleltoofast/TS8_ITL_injectRD_fix.seq deleted file mode 100644 index bd16d83..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_injectRD_fix.seq +++ /dev/null @@ -1,390 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(512) - CALL ReadFlat repeat(64) - CALL FastFlushPixel repeat(@PostCols) - RTS - - FlatLine: # Line readout with RG high - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadFlat repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(2000) - JSR FlatLine repeat(48) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_injectRD_scan.seq b/RTM8/paralleltoofast/TS8_ITL_injectRD_scan.seq deleted file mode 100644 index 418f22f..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_injectRD_scan.seq +++ /dev/null @@ -1,388 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to inject reset level as fake pixel - -# note: this sequencer file will not produce anything else than fake images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read with RG simulating pixel content - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadFlat: # Single pixel read with RG high all the time to simulate no signal - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 1, 0, 1, 0, 0 - BufferS = 1, 1, 1, 0, 0 - FlushS = 1, 1, 0, 0, 0 - 80 ns = 1, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - FlatLine: # Line readout with RG high - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReadFlat repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_scan.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_scan.seq deleted file mode 100644 index fc8eb20..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_scan.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t0.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t0.seq deleted file mode 100644 index fc8eb20..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t0.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t1360.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t1360.seq deleted file mode 100644 index f042bc8..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t1360.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 420 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t1440.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t1440.seq deleted file mode 100644 index a32234f..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t1440.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - 160 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 340 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t1520.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t1520.seq deleted file mode 100644 index d1b2aba..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t1520.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - 240 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 260 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t1600.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t1600.seq deleted file mode 100644 index 98499ba..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t1600.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - 320 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 180 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t1780.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t1780.seq deleted file mode 100644 index 36be8c3..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t1780.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 1, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t420.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t420.seq deleted file mode 100644 index 59188e3..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t420.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 1, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t560.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t560.seq deleted file mode 100644 index 35951be..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t560.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 1, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longS1_t760.seq b/RTM8/paralleltoofast/TS8_ITL_longS1_t760.seq deleted file mode 100644 index fc93b89..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longS1_t760.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time -# 20180122, C.J.: modified to acquire frames at specific time indexes (in TM) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle.seq deleted file mode 100644 index 5384f2b..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: test with very long settling times before RD/RU: increased by 5 us each - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5180 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_RGhigh_longS1_scan.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_RGhigh_longS1_scan.seq deleted file mode 100644 index f05fa8d..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_RGhigh_longS1_scan.seq +++ /dev/null @@ -1,424 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180112, C.J.: test with very long settling times before RD/RU: increased by 5 us each, and S1 up during both, and RG high all the time to measure the contribution of the flex - -# !!! this particular file is dedicated for scan mode and will not give valid results otherwise - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5150 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 100 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 256 # Number of columns to read - REP_FUNC PostCols 220 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 1000 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel256: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 - 1830 ns = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3320 ns = 1, 1, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel512: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 - 4390 ns = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 760 ns = 1, 1, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel768: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 1410 ns = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 3930 ns = 1, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel1024: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3970 ns = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 1370 ns = 1, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine256: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel256 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine512: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel512 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine768: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel768 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine1024: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel1024 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame cut into segments to obtain longer scans - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(200) - JSR WindowLine256 repeat(200) - JSR WindowLine512 repeat(200) - JSR WindowLine768 repeat(200) - JSR WindowLine1024 repeat(200) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure, 25 ms duration, no flush - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame -# JSR PumpFrame # removed from this file - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_fixclamp.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_fixclamp.seq deleted file mode 100644 index 15c916e..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_fixclamp.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: test with very long settling times before RD/RU: increased by 5 us each -# 20180122, C.J.: modified sequence to have all baselines clamped to the same level (moving clamp during RD) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5180 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1.seq deleted file mode 100644 index f50f935..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180112, C.J.: test with very long settling times before RD/RU: increased by 5 us each, and S1 up during both - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5150 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_fixclamp.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_fixclamp.seq deleted file mode 100644 index f412e16..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_fixclamp.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180112, C.J.: test with very long settling times before RD/RU: increased by 5 us each, and S1 up during both -# 20180122, C.J.: modified sequence to have all baselines clamped to the same level (moving clamp during RD) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5150 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan.seq deleted file mode 100644 index be02c86..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan.seq +++ /dev/null @@ -1,424 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180112, C.J.: test with very long settling times before RD/RU: increased by 5 us each, and S1 up during both - -# !!! this particular file is dedicated for scan mode and will not give valid results otherwise - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5150 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 100 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 256 # Number of columns to read - REP_FUNC PostCols 220 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 1000 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel256: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - 1830 ns = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3320 ns = 0, 1, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel512: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - 4390 ns = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 760 ns = 0, 1, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel768: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 1410 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 3930 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel1024: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3970 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 1370 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine256: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel256 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine512: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel512 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine768: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel768 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine1024: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel1024 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame cut into segments to obtain longer scans - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(200) - JSR WindowLine256 repeat(200) - JSR WindowLine512 repeat(200) - JSR WindowLine768 repeat(200) - JSR WindowLine1024 repeat(200) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure, 25 ms duration, no flush - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame -# JSR PumpFrame # removed from this file - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan_fixclamp.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan_fixclamp.seq deleted file mode 100644 index d22e857..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_longS1_scan_fixclamp.seq +++ /dev/null @@ -1,425 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180112, C.J.: test with very long settling times before RD/RU: increased by 5 us each, and S1 up during both -# 20180122, C.J.: modified sequence to have all baselines clamped to the same level (moving clamp during RD) - -# !!! this particular file is dedicated for scan mode and will not give valid results otherwise - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5150 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 100 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 256 # Number of columns to read - REP_FUNC PostCols 220 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 1000 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel256: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - 1830 ns = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3320 ns = 0, 1, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel512: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - 4390 ns = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 760 ns = 0, 1, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel768: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 1410 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 3930 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel1024: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3970 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 1370 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine256: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel256 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine512: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel512 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine768: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel768 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine1024: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel1024 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame cut into segments to obtain longer scans - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(200) - JSR WindowLine256 repeat(200) - JSR WindowLine512 repeat(200) - JSR WindowLine768 repeat(200) - JSR WindowLine1024 repeat(200) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure, 25 ms duration, no flush - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame -# JSR PumpFrame # removed from this file - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_scan.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_scan.seq deleted file mode 100644 index 94949c1..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_scan.seq +++ /dev/null @@ -1,420 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: test with very long settling times before RD/RU: increased by 5 us each - -# !!! this particular file is dedicated for scan mode and will not give valid results otherwise - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5180 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 100 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 256 # Number of columns to read - REP_FUNC PostCols 220 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 1000 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel256: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - 1860 ns = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - 3320 ns = 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel512: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - 4420 ns = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - 760 ns = 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel768: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 1410 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 3930 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel1024: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3970 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 1370 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine256: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel256 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine512: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel512 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine768: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel768 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine1024: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel1024 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame cut into segments to obtain longer scans - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(200) - JSR WindowLine256 repeat(200) - JSR WindowLine512 repeat(200) - JSR WindowLine768 repeat(200) - JSR WindowLine1024 repeat(200) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure, 25 ms duration, no flush - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame -# JSR PumpFrame # removed from this file - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_longsettle_scan_fixclamp.seq b/RTM8/paralleltoofast/TS8_ITL_longsettle_scan_fixclamp.seq deleted file mode 100644 index 741f129..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_longsettle_scan_fixclamp.seq +++ /dev/null @@ -1,421 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180109, C.J.: test with very long settling times before RD/RU: increased by 5 us each -# 20180122, C.J.: modified sequence to have all baselines clamped to the same level (moving clamp during RD) - -# !!! this particular file is dedicated for scan mode and will not give valid results otherwise - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 5180 ns # Time between ASPIC clamp and first ramp - ISO2: 5340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 100 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 256 # Number of columns to read - REP_FUNC PostCols 220 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 1000 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 1, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel256: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - 1860 ns = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - 3320 ns = 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel512: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - 4420 ns = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - 760 ns = 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel768: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 1410 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 3930 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReadPixel1024: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - 3970 ns = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - 1370 ns = 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine256: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel256 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine512: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel512 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine768: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel768 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowLine1024: # Line readout - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel1024 repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame cut into segments to obtain longer scans - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(200) - JSR WindowLine256 repeat(200) - JSR WindowLine512 repeat(200) - JSR WindowLine768 repeat(200) - JSR WindowLine1024 repeat(200) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure, 25 ms duration, no flush - CALL NoFlushPixelOpen repeat(13966) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame -# JSR PumpFrame # removed from this file - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_reverse.seq b/RTM8/paralleltoofast/TS8_ITL_reverse.seq deleted file mode 100644 index df0ed3b..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_reverse.seq +++ /dev/null @@ -1,381 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20180122, C.J.: modified to include reverse clocking - -# this file will not produce usable images - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - ReversePixel: # Single pixel read with reverse serial clocking - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 1, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout with half reverse clocking - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel - CALL ReversePixel repeat(288) - CALL ReadPixel repeat(288) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_settle_0.seq b/RTM8/paralleltoofast/TS8_ITL_settle_0.seq deleted file mode 100644 index cf2e064..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_settle_0.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 180 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_settle_100.seq b/RTM8/paralleltoofast/TS8_ITL_settle_100.seq deleted file mode 100644 index fd4a7a2..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_settle_100.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 280 ns # Time between ASPIC clamp and first ramp - ISO2: 440 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_settle_1000.seq b/RTM8/paralleltoofast/TS8_ITL_settle_1000.seq deleted file mode 100644 index 0b7f995..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_settle_1000.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 1180 ns # Time between ASPIC clamp and first ramp - ISO2: 1340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_settle_200.seq b/RTM8/paralleltoofast/TS8_ITL_settle_200.seq deleted file mode 100644 index 48020df..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_settle_200.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 380 ns # Time between ASPIC clamp and first ramp - ISO2: 540 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_settle_2000.seq b/RTM8/paralleltoofast/TS8_ITL_settle_2000.seq deleted file mode 100644 index c6037e7..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_settle_2000.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 2180 ns # Time between ASPIC clamp and first ramp - ISO2: 2340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_settle_400.seq b/RTM8/paralleltoofast/TS8_ITL_settle_400.seq deleted file mode 100644 index 90d4f24..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_settle_400.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 580 ns # Time between ASPIC clamp and first ramp - ISO2: 740 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/TS8_ITL_settle_700.seq b/RTM8/paralleltoofast/TS8_ITL_settle_700.seq deleted file mode 100644 index 76d7ee3..0000000 --- a/RTM8/paralleltoofast/TS8_ITL_settle_700.seq +++ /dev/null @@ -1,365 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# (TS8_ITL_2s_iso1.seq) -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20170116, C.J.: increased BufferS to 90 ns - -# file is designed to test noise versus settling times (ISO1 and ISO2) - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 880 ns # Time between ASPIC clamp and first ramp - ISO2: 1040 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 90 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_RGfirst.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_RGfirst.seq deleted file mode 100644 index cd33559..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_RGfirst.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: back to RG only in first TS -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 150 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_bufferP.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_bufferP.seq deleted file mode 100644 index 9fb7027..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_bufferP.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, added settling time after parallel transfer -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - 40 us = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_iso1.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_iso1.seq deleted file mode 100644 index 28e437d..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_iso1.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 50ns to ISO1 -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 230 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_iso2.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_iso2.seq deleted file mode 100644 index 09a9d8b..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_iso2.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_longCL.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_longCL.seq deleted file mode 100644 index 347ac73..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_longCL.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues, added 20ns to ISO1, 20ns to TimeC, 10ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 350 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_longS1.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_longS1.seq deleted file mode 100644 index 585859e..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_longS1.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, went back to RG only in first TS and long crossing between S1 and S2 -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_shortRG.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_shortRG.seq deleted file mode 100644 index ed5701b..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_shortRG.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 50ns to ISO1, split second TS to shorten RG to 120ns -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 230 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_2s_splitS3.seq b/RTM8/paralleltoofast/archive/TS8_ITL_2s_splitS3.seq deleted file mode 100644 index ca0b980..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_2s_splitS3.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 50ns to ISO1, split second TS to shorten RG to 140ns -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 230 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2, SHU - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_allRG.seq b/RTM8/paralleltoofast/archive/TS8_ITL_allRG.seq deleted file mode 100644 index 9f23603..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_allRG.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171116, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, moved trigger early to increase ASPIC RST, put RG and serial clocks high all the time -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 1, 1, 1, 0, 0, 0, 0, 1, 0 - BufferS = 1, 1, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 1, 1, 1, 1, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 - BufferS = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 1, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_long.seq b/RTM8/paralleltoofast/archive/TS8_ITL_long.seq deleted file mode 100644 index 6b12577..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_long.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/archive/TS8_ITL_slowP.seq b/RTM8/paralleltoofast/archive/TS8_ITL_slowP.seq deleted file mode 100644 index e5eb958..0000000 --- a/RTM8/paralleltoofast/archive/TS8_ITL_slowP.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, slowed down parallel transfer by factor of 4 and fast flush by 2 -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 20000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_RGfirst.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_RGfirst.seq deleted file mode 100644 index cd33559..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_RGfirst.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: back to RG only in first TS -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 150 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_bufferP.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_bufferP.seq deleted file mode 100644 index 9fb7027..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_bufferP.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, added settling time after parallel transfer -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - 40 us = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso1.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso1.seq deleted file mode 100644 index 28e437d..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso1.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 50ns to ISO1 -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 230 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso2.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso2.seq deleted file mode 100644 index 09a9d8b..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_iso2.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longCL.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longCL.seq deleted file mode 100644 index 347ac73..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longCL.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues, added 20ns to ISO1, 20ns to TimeC, 10ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 350 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longS1.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longS1.seq deleted file mode 100644 index 585859e..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_longS1.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, went back to RG only in first TS and long crossing between S1 and S2 -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_shortRG.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_shortRG.seq deleted file mode 100644 index ed5701b..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_shortRG.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 50ns to ISO1, split second TS to shorten RG to 120ns -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 230 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_splitS3.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_splitS3.seq deleted file mode 100644 index 8294dde..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_2s_splitS3.seq +++ /dev/null @@ -1,363 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 50ns to ISO1, split second TS to shorten RG to 140ns -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 230 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_allRG.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_allRG.seq deleted file mode 100644 index 9f23603..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_allRG.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171116, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, moved trigger early to increase ASPIC RST, put RG and serial clocks high all the time -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 1, 1, 1, 0, 0, 0, 0, 1, 0 - BufferS = 1, 1, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 1, 1, 1, 1, 0, 1, 0, 0, 0, 0 - TimeC = 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 - BufferS = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - ISO2 = 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 - RampTime = 1, 1, 1, 1, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_long.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_long.seq deleted file mode 100644 index 6b12577..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_long.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: went back to RG only in first TS and long crossing between S1 and S2, giving more time to settle -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high, patched exposure time - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 8000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 500 ns # Time between ASPIC ramps - TimeS: 140 ns # Base element of serial transfers - BufferS: 80 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 200 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 120 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 50 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 50 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 50 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only) - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 50 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_longS1S3.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_longS1S3.seq deleted file mode 100644 index 9196543..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_longS1S3.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, went back to RG only in first TS and long crossing between S1 and S2 -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20171121, C.J.: new scheme with all serial clocks high as long as possible - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 400 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - 100 ns = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 - TimeS = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/run2017/TS8_ITL_P_slowP.seq b/RTM8/paralleltoofast/run2017/TS8_ITL_P_slowP.seq deleted file mode 100644 index e5eb958..0000000 --- a/RTM8/paralleltoofast/run2017/TS8_ITL_P_slowP.seq +++ /dev/null @@ -1,362 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, slowed down parallel transfer by factor of 4 and fast flush by 2 -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 20000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 5000 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 340 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - TimeS = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/singleclock/TS8_ITL_RGonly.seq b/RTM8/paralleltoofast/singleclock/TS8_ITL_RGonly.seq deleted file mode 100644 index df905fa..0000000 --- a/RTM8/paralleltoofast/singleclock/TS8_ITL_RGonly.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20171120, C.J.: activating RG only for noise measurement - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read, with single clock actually moving - clocks: RG, S2, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 0, 0, 0, 0, 0 - 200 ns = 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/singleclock/TS8_ITL_allS.seq b/RTM8/paralleltoofast/singleclock/TS8_ITL_allS.seq deleted file mode 100644 index 15310b5..0000000 --- a/RTM8/paralleltoofast/singleclock/TS8_ITL_allS.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20171120, C.J.: timing matching the single clock sequences - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read - clocks: RG, S1, S2, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 1, 0, 1, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 - 200 ns = 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - BufferS = 0, 0, 1, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 - TimeC = 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS1.seq b/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS1.seq deleted file mode 100644 index 2221236..0000000 --- a/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS1.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20171120, C.J.: single clock scan - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read, with single clock actually moving - clocks: RG, S1, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 0, 0, 0, 0, 0 - 200 ns = 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS2.seq b/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS2.seq deleted file mode 100644 index d59133c..0000000 --- a/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS2.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20171120, C.J.: single clock scan - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read, with single clock actually moving - clocks: RG, S2, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 0, 0, 0, 0, 0 - 200 ns = 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END diff --git a/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS3.seq b/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS3.seq deleted file mode 100644 index 5ab6172..0000000 --- a/RTM8/paralleltoofast/singleclock/TS8_ITL_singleS3.seq +++ /dev/null @@ -1,364 +0,0 @@ -# REB5 timing for ITL CCD on TS8 -# Original file: E2V file for TS8 by Homer Neal -# 20161116: Modified by Claire Juramy for ITL sensors -# 20170321: Additional timing tests in TS8 -# 20170410: copied from TS8_ITL_ResetFirst_CJ_20170321_mod3.seq for noise tests on RTM1 -# 20170413: modified for faster readout: TimeS to 120 ns, TimeC to 180 ns, ISO1 to 150 ns -# ISO2 to 350 ns, removed 20 ns timeslice after RD, S1/S3 buffer to 50 ns, BufferP to 100 ns -# 20170519: updated for ETU1 at SLAC, taking into account upgrades to sequencer -# interpreter, and slowed down flush during exposure/dark -# 20170709: removed reset first, longer ISO1, removed last slice (best file from RunFix) -# 20170728: corrected frame size, moved to flush by burst during exposure/dark, aligned flush times with pixel read time -# 20171011, C.J.: added FlushP parameter specific to fast flush and CleaningSubr pointer for full frame flush -# 20171101, H.N.: added new count for ClearCCD and set clearing counts to 1 by default -# 20171102, C.J.: added flush of serial register right before frame readout to remove charges from fast clear (matches E2V sequence) -# 20171106, C.J.: tests to fix RTM8 issues: added 20ns to ISO1, 30ns to ISO2, split second TS to shorten RG -# 20171118, C.J.: modified parallel transfer to transfer with S1 and S2 high -# 20171120, C.J.: single clock scan - -[constants] # will be substituted in the code at compilation time, if used - SegRows: 2000 # Number of rows of the sensor - SegCols: 509 # Number of columns of the sensors - SerCols: 512 # Size of serial register - DetectorCols: 576 # Total number of columns in a full readout - DetectorRows: 2048 # Total number of rows in a full readout - TimeP: 5000 ns # Base time element of parallel transfers - BufferP: 100 ns # Parallel transfer buffer time - FlushP: 2500 ns # Fast parallel clear transfer time - ISO1: 200 ns # Time between ASPIC clamp and first ramp - ISO2: 370 ns # Time between ASPIC ramps - TimeS: 120 ns # Base element of serial transfers - BufferS: 70 ns # Buffer for serial clock crossing - FlushS: 500 ns # Base element of serial flush - RampTime: 320 ns # ASPIC ramp time - clockperiod: 10 ns # FPGA clock period (required by the interpreter) - TimeC: 180 ns # clamp time - -[clocks] # clock channels - P1: 8 # Parallel clock 1 - P2: 9 # Parallel clock 2 - P3: 10 # Parallel clock 3 - P4: 11 # Parallel clock 4 - S1: 4 # Serial clock 1 - S2: 5 # Serial clock 2 - S3: 6 # Serial clock 3 - RG: 7 # Serial reset clock - CL: 3 # ASPIC clamp - RST: 2 # ASPIC integrator reset - RD: 1 # ASPIC ramp-down integration - RU: 0 # ASPIC ramp-up integration - TRG: 12 # ADC sampling trigger - SOI: 13 # Start of image - EOI: 14 # End of image - SHU: 16 # Shutter TTL (for testing only) - -[pointers] # can define a pointer to a function or to a repetition number (for subroutines or functions) - REP_FUNC PreCols 0 # Number of columns to skip before readout window, including prescan - REP_FUNC ReadCols 576 # Number of columns to read - REP_FUNC PostCols 0 # Number of columns to discard after window (it is up to the user that total columns = 576) - REP_FUNC OverCols 0 # Number of columns acquired after line is read for baseline subtraction - REP_FUNC ReadCols2 0 # Number of columns in second part of ROI if split - REP_SUBR ExposureTime 5 # Duration of exposure in units of 25 ms - REP_SUBR PreRows 0 # Number of rows to skip before window - REP_SUBR ReadRows 2048 # Number of rows of the window - REP_SUBR PostRows 0 # Number of rows after window (it is up to the user that total lines = 2048) - REP_SUBR ClearCount 1 # Number of full CCD clears executed by the Clear main - REP_SUBR CleaningNumber 1 # Number of full CCD clears before acquiring a frame - PTR_SUBR CleaningSubr BulkFlushLine # Subroutine to use for clearing the frame - REP_FUNC FlushTime 50000 # Repetitions of FlushPixel function during FlushRegister - REP_SUBR PumpNumber 1000 # Number of parallel pumps - PTR_SUBR Exposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - PTR_SUBR EExposure ExposureFlush # Subroutine to use during exposure (SerialFlush or ExposureFlush) - -[functions] - Default: # Default state when not operating - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 1, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 110 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 -# clocks: P2, S1, RG, CL, RST, SHU -# slices: -# 1 us = 1, 1, 1, 1, 1, 0 - - TransferLine: # Single line transfer - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 0, 1, 0, 1, 1 - TimeP = 0, 1, 0, 0, 1 - TimeP = 0, 1, 0, 0, 0 - constants: S1=1, RST=1 - - ReverseLine: # Single line transfer in the reverse direction - clocks: P1, P2, P3, RG, S2 - slices: - BufferP = 0, 1, 0, 1, 1 - TimeP = 1, 1, 0, 1, 1 - TimeP = 1, 0, 0, 1, 1 - TimeP = 1, 0, 1, 1, 1 - TimeP = 0, 0, 1, 1, 1 - TimeP = 0, 1, 1, 1, 1 - TimeP = 0, 1, 0, 1, 1 - constants: S1=1, RST=1 - - ParallelFlush: # Single line transfer with all serial register clocks high to flush it - clocks: P1, P2, P3 - slices: - BufferP = 0, 1, 0 - FlushP = 0, 1, 1 - FlushP = 0, 0, 1 - FlushP = 1, 0, 1 - FlushP = 1, 0, 0 - FlushP = 1, 1, 0 - FlushP = 0, 1, 0 - constants: S1=1, S2=1, S3=1, RG=1, RST=1 - - ReadPixel: # Single pixel read, with single clock actually moving - clocks: RG, S3, CL, RST, RD, RU, TRG, SHU - slices: - BufferS = 1, 0, 0, 0, 0, 0, 0, 0 - 50 ns = 1, 0, 0, 0, 0, 0, 0, 0 - 200 ns = 0, 0, 0, 0, 0, 0, 0, 0 - BufferS = 0, 1, 0, 0, 0, 0, 1, 0 - TimeS = 0, 1, 0, 1, 0, 0, 0, 0 - TimeC = 0, 1, 1, 1, 0, 0, 0, 0 - ISO1 = 0, 1, 0, 0, 0, 0, 0, 0 - RampTime = 0, 1, 0, 0, 1, 0, 0, 0 - BufferS = 0, 1, 0, 0, 0, 0, 0, 0 - ISO2 = 0, 0, 0, 0, 0, 0, 0, 0 - RampTime = 0, 0, 0, 0, 0, 1, 0, 0 - constants: P1=0,P2=1,P3=0 - - StartOfImage: # Signals start of frame to be recorded - clocks: SOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish previous conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - EndOfImage: # Signals end of frame to be recorded - clocks: EOI, SHU - slices: - 4800 ns = 0, 0 # lets ADC finish conversion and transfer - 100 ns = 1, 0 - 100 ns = 0, 0 - constants: P2=1, S1=1, RST=1 - - FlushPixel: # Single pixel flush, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - FlushS = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - FlushS = 0, 1, 0, 0, 0 - 80 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - NoFlushPixel: # Hold clocks, same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - BufferS = 1, 1, 0, 1, 0 - FlushS = 1, 1, 0, 1, 0 - 80 ns = 1, 1, 0, 1, 0 - constants: P2=1, RST=1 - - FastFlushPixel: # Single pixel fast flush, 1250 ns - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 0 - 300 ns = 1, 0, 0, 1, 0 - BufferS = 0, 0, 1, 1, 0 - 300 ns = 0, 0, 1, 0, 0 - BufferS = 0, 1, 1, 0, 0 - 300 ns = 0, 1, 0, 0, 0 - 140 ns = 0, 1, 0, 0, 0 - constants: P2=1, RST=1 - - FlushPixelOpen: # Exposure while flushing serial register (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 0, 0, 1, 1 - BufferS = 0, 0, 1, 1, 1 - FlushS = 0, 0, 1, 0, 1 - BufferS = 0, 1, 1, 0, 1 - FlushS = 0, 1, 0, 0, 1 - 80 ns = 0, 1, 0, 0, 1 - constants: P2=1, RST=1 - - NoFlushPixelOpen: # Hold clocks and shutter open (testing only), same duration as ReadPixel - clocks: RG, S1, S2, S3, SHU - slices: - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - BufferS = 1, 1, 0, 1, 1 - FlushS = 1, 1, 0, 1, 1 - 80 ns = 1, 1, 0, 1, 1 - constants: P2=1, RST=1 - - SlowFlush: # Simultaneous serial and parallel flush, slow (waiting pattern) - clocks: RG, S1, S2, S3, P1, P2, P3 - slices: - TimeP = 1, 1, 0, 0, 0, 1, 0 - TimeP = 1, 1, 0, 1, 0, 1, 0 - TimeP = 0, 0, 0, 1, 0, 1, 0 - TimeP = 0, 0, 1, 1, 0, 1, 0 - TimeP = 0, 0, 1, 0, 0, 1, 0 - TimeP = 0, 1, 1, 0, 0, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 1 - 80000 ns = 1, 1, 1, 0, 0, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 1 - 80000 ns = 1, 1, 1, 0, 1, 0, 0 - 80000 ns = 1, 1, 1, 0, 1, 1, 0 - 80000 ns = 1, 1, 1, 0, 0, 1, 0 - 80000 ns = 0, 1, 0, 0, 0, 1, 0 - -[subroutines] -# -# Line-level operations --------------------------------------------- -# -# including several options to flush lines - - BulkFlushLine: # Transfer line with all serial clocks and reset high - CALL ParallelFlush - RTS - - FlushLine: # Transfer line and flush it - CALL TransferLine - CALL FlushPixel repeat(DetectorCols) - RTS - - WindowLine: # Line readout - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel # because the trigger is at the beginning of ReadPixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - RTS - - WindowWithOverscan: # Line readout with split ROI and overscan - CALL TransferLine - CALL FastFlushPixel repeat(@PreCols) - CALL FlushPixel repeat(1) # for transferring first pixel - CALL ReadPixel repeat(@ReadCols) - CALL FastFlushPixel repeat(@PostCols) - CALL ReadPixel repeat(@ReadCols2) - CALL ReadPixel repeat(@OverCols) - RTS - - PumpLine: # Transfer line back and forth - CALL TransferLine - CALL ReverseLine - RTS - -# -# Frame-level readout operations ------------------------------------ -# - - CloseShutter: # Gives time for shutter to close (to be adapted depending on setup) - CALL FlushPixel repeat(31250) - RTS - - FlushRegister: # Flushing serial register from accumulated charges after fast clearing - CALL FlushPixel repeat(@FlushTime) - RTS - - ReadFrame: # Readout and acquisition of a CCD frame (window) - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - CALL StartOfImage - JSR WindowLine repeat(@ReadRows) - CALL EndOfImage - JSR FlushLine repeat(@PostRows) - RTS - - FakeFrame: # Readout of a CCD frame (window) with no data output - JSR FlushLine repeat(@PreRows) - JSR FlushRegister - JSR WindowLine repeat(@ReadRows) - JSR FlushLine repeat(@PostRows) - RTS - -# -# Exposure operations ----------------------------------------------- -# - ExposureFlush: # Elementary exposure with burst of flushing, 25 ms duration - CALL NoFlushPixelOpen repeat(13390) - CALL FlushPixelOpen repeat(576) - RTS - - SerialFlush: # Elementary dark with burst of flushing, 25 ms duration - CALL NoFlushPixel repeat(13390) - CALL FlushPixel repeat(576) - RTS - - Exposure25ms: # Selects exposure subroutine, 25 ms duration - JSR @Exposure repeat(1) - RTS - - ClearCCD: # Clear CCD once - JSR @CleaningSubr repeat(DetectorRows) - RTS - - ExposeFrame: # Operations to expose (or not) a CCD frame - JSR ClearCCD repeat(@CleaningNumber) - JSR Exposure25ms repeat(@ExposureTime) - JSR CloseShutter - RTS - - PumpFrame: # Parallel pumping - JSR PumpLine repeat(@PumpNumber) - RTS - -[mains] - Bias: # Bias after clearing - JSR ClearCCD repeat(@CleaningNumber) - JSR ReadFrame - END - - Expose: # Exposure only - JSR ExposeFrame - END - - PocketPump: # Exposure with pocket pump -# JSR CloseShutter # this is not needed - JSR ExposeFrame - JSR PumpFrame - END - - Acquire: # Readout only - JSR ReadFrame - END - - PseudoAcquisition: # Simulates acquisition without storing image (for debugging) - JSR ExposeFrame - JSR FakeFrame - END - - InfiniteWait: # Slow flushing on infinite loop - CALL SlowFlush repeat(infinity) - END - - Clear: # clear only - JSR ClearCCD repeat(@ClearCount) - END