Sequence Tables

1. What are sequence tables?

Individual patterns perform an functional operation on the array. In order to perform complete readout (reading out and samplings pixels on the array), the these patterns must be applied to the array in a specific sequence.

The IC application builds up this sequence table and downloads it (along with its related patterns) into the clock DSP RAM. The IC can instruct the clock DSP to execute this sequence table. This cause the clock DSP to step though outputting the individual words in each pattern in the sequence defined by the sequence table.

2. General format of the sequence table:

This information is obtained from the Hi.h files. Please refer to it for the most acturate information..

As stated above the sequence tables are loaded into the DSP RAM along with the patterns. The pattern stored in RAM using the following format:

struct pat_t          /* Pattern  - series of clocking waveforms */
{
 unsigned long pmask;          /* preserve bits mask */
 long n;                       /* number of entries */
 long w[CK_MAX_PAT_ENTRIES];   /* bits defining waveform */
};
for example
 0e000e40
 00000004
 00000040
 008000c0
 008000c0
 008000c0
The the SBRC 1024x1024 array, there are 14 (CK_NUM_PATTERN) type of patterns defined. See the defines CK_P{12345}* in Hi.h show what functional operation each pattern is expected to preform.

The sequence table are stored in RAM using the following format:

struct tab_t
{
 long n;          /* number of entries */
 long dummy;      /* dummy spacer */
 struct tab_ent_t /* Table enty consist of: */
  {
  long rep;     /*   repeat factor for patter. */
  long paddr;   /*   pattern to execute.       */
  } p[CK_MAX_TBL_ENTRIES];
};
for example:
00002    ; 2 entiries
00000    ; dummy data
00001    ; rep factor for 1st entry.
33c00    ; reference to 1st pattern
00003    ; rep factor for 2nd entry.
33d00    ; reference to 2nd pattern
The function HiCkGetPattern() load these 26 patterns in to the IC memory.
The function HiCkLoadTable() builds a sequence table and copied the pattern/sequence table in the DSP RAM. The General procedure is:
a. calculation timing information based on using parameters.
b. Assign a DSP RAM location to each of the 26 patterns.
c. Based on user parameters, build a sequence table to readout the array.
d. copy the sequence table into DSP RAM
e. copy each of the 26 pattern in to DSP RAM.
The clock dsp has room for 2 seqence tables, the memory locations are define in dsp_clock.h as:
#define CLOCK_TABLE1_DSP_ADDR (0x31000) /* Location of Table1         */
#define CLOCK_TABLE2_DSP_ADDR (0x38000) /* Location of Table2         */
for example, if the address CLOCK_TABLE1_DSP_ADDR is used then:

 Seqtable  is stored at 0x31000
 (seqence table has limit of 13800 entries, see Hi.h for details).
 Pattern00 is stored at 0x31000 + 0x6c00(CK_PATTERN_OFFSET) = 0x316c00
 Pattern01 is stored at Pattern00 + 0x100(CK_PATTERN_LEN)   = 0x316c40
    ...