Reading out Regions of Interest (ROI) for CCD focal planes can be extremely complex. The inter-connection between number of outputs per detector, number and orientation of detectors and pixel binning can result in scenarios that are too complex for the simple sequencer processing available in MONSOON/Torrent systems.
Four user attributes are used to describe a region of interest. These attributes are all described by pixel positions or counts given assuming no binning is being done. The values loaded down to the sequencer are modified to take into account any requested binning values.
The following explains the restrictions on ROI definitions made to simplify ROI handling to prevent some of this complication.
There are sixteen 16-bit loop registers for available in the Sequencer to enable code flow control. The table below shows their current default usage. While these registers are general purpose loop registers using them for other than their reserved purpose will require the writing of a custom Detector library routine (detCalcPixels) to load the registers with correct values before taking an image.
The generic_CCD and basciCCD detector libraries use these assignments, but load the seqColBin register with one less than the requested number of pixels to be binned and sets the user Bit serBinEnbl to 1 if serial binning is active. The chileCCD detector library uses these assignments, and loads the seqColBin register with the requested number of pixels to be binned and does not use serBinEnbl user bit.
Register number | FPGA Register name | CCD User Register name | CCD Sequencer Usage | IR User Register name | IR Sequencer Usage | Comments |
---|---|---|---|---|---|---|
0 | SeqLoopReg[0] | seqRowCount | #NROW | seqRowCount | #ROW_CNT | Number of rows to readout i.e. for CCDs the number of parallel or slow shifts |
1 | SeqLoopReg[1] | seqColCount | #NCOL | seqColCount | #COL_CNT | Number of columns to readout i.e. for CCDs the number of serial or fast shifts |
2 | SeqLoopReg[2] | seqRowBin | #NPBINS | seqFSamples | #FSAMPLES | Number of rows to bin during CCD readout or number of Fowler samples in IR Readout |
3 | SeqLoopReg[3] | seqColBin | #NSBINS | seqDigAvg | #DIG_AVG | Number of columns to bin during CCD readout or number of Digital Average samples in IR Readout |
4 | SeqLoopReg[4] | seqRoiRow | #ROIROW | seqCoAdds | #COADDS | Number of rows to skip during CCD ROI readout or number of Co-Adds in IR Readout |
5 | SeqLoopReg[5] | seqRoiCol | #ROICOL | seqLoopDly | #LOOP_DLY | Number of columns to skip during CCD ROI readout or read loop delay factor in Fowler IR Readout |
6 | SeqLoopReg[6] | seqRoiRskip | #RROWSKP | seqSweeps | #SWEEPS | Number of rows to skip after ROI readout is Complete or number of reset cycles before integration in IR mode |
7 | SeqLoopReg[7] | seqRoiCskip | #RCOLSKP | seqSyncResets | #SYNC_RESETS | Number of columns to skip on each row after the ROI columns are read out or number of resets to do when syncing two DHE's |
8 | SeqLoopReg[8] | seqFocusShft | #FOCUS_SHFT | seqRstTime | #RST_TIME | number of rows to shift image between focus exposures |
9 | SeqLoopReg[9] | seqPreScan | #XPRE | Not Assigned | Not Assigned | number of prescan pixels to read (Usually not converted or transferred to the PAN |
10 | SeqLoopReg[10] | seqShtrDly | #SHUTDLY | Not Assigned | Not Assigned | The time in ms to delay while the shutter opens or closes if these times are different use an unassigned register for the closing time. |
11 | SeqLoopReg[11] | OvrScanRowCnt | #OSROWCNT | Not Assigned | Not Assigned | Number of binned rows to convert after reading ROI rows and skipping unread active rows |
12 | SeqLoopReg[12] | OvrScanColCnt | #OSCOLCNT | Not Assigned | Not Assigned | Number of binned pixels to convert after reading ROI pixels skipping unread active pixels |
13 | SeqLoopReg[13] | Not Assigned | Not Assigned | Not Assigned | ||
14 | SeqLoopReg[14] | Not Assigned | Not Assigned | Not Assigned | ||
15 | SeqLoopReg[15] | Not Assigned | Not Assigned | Not Assigned |
The MONSOON/Torrent systems have in the sequencer Control register four user settable bits that can be used with The conditional jump instruction to steer the ucode execution. The following are the current default usage for these bits.
User bit number | FPGA Attribute name | CCD User Attribute name | CCD Sequencer Usage | IR User Attribute name | IR Sequencer Usage | Comments |
---|---|---|---|---|---|---|
0 | SeqUserBit0 | seqContRun | #CONT_RUN | seqContRun | #CONT_RUN | Debug function - run process indefinitely after start exposure received |
1 | SeqUserBit1 | serBinEnbl | #SBIN_ENB | Not Assigned | #IDLERST_ENBL | Enable serial binning in CCD readout or enable array resets during idle time for IR apps. |
2 | SeqUserBit2 | rdRoiEnbl | #RDROI_ENB | digAvgEnb | #DIGAVG_ENBL | Tells the sequencer a ROI readout is in progress for CCDs or enable digital averaging in IR apps. |
3 | SeqUserBit3 | Not Assigned | Not Assigned | Not Assigned | #ROWRST_ENBL | Enable Row Reset mode in IR apps. |