; nics_0.asm 12-12-2001 ; Nics Waveforms for SVB1 serializer. ; ; taken from Comoretto's wf ; ; WARNING: all repetition index means value+1: ; 0 means 1 iteration, 2 means 3 iterationis, 255 (the max) ; means 256 iterations ; This apply on BOTH loop and output mask, so (LINE @ 0) means LINE for 1 ; clock cycle ; some symbols ; ZERO equ #0 ; all void BASE equ ZERO ; standard no operation pattern PIXEL equ #01 ; xclock XSYNC equ #02 ; xsync LINE equ #04 ; yclock YSYNC equ #08 ; ysync RSTX equ #10 ; Reset of all Quadrants SOCX equ #20 ; ADC start (Start Of Conversion) EOF equ #40 ; End of frame READ equ #80 ; power to output buffers mul equ 8 ; step (1 millisecond) ROWS equ 512 ; Number of rows in a quadrant ROWS4 equ 127 ; Number of rows in a quadrant/4 ROWSL equ 3 ; Number of loop to complete a quadrant COL4 equ 255 ; Number of columns in a quadrant/4 COLL equ 1 ; Number of loop to complete a quadrant ; here we define the global output masks and symbols orgd zero ; start of output masks dummy255 data BASE @ 255 ; 255 * noop smallnoharm data BASE @ (20*mul-1); the old small_no_harm BASE10 data BASE @ (10*mul-1); base delay for TINT (10usecs) ; ; values for init and frame reset VOID3 data BASE @ 2 ; BASE for 375ns VOID2 data BASE @ 1 ; BASE for 250ns VOID1 data BASE @ 0 ; BASE for 125ns LINE1 data LINE @ 0 ; LINE for 125ns RES5 data RSTX @ 4 ; RSTX for 625ns YINIT data YSYNC @ 7 ; Y sync for 1 usec XINIT data XSYNC @ 2 ; X sync for 375ns XSYNC5 data (XSYNC+READ) @ 4; X sync+read for 625ns PIXEL3 data (PIXEL+READ) @ 2; Xclock+read for 375ns PIXEL1 data (PIXEL+READ) @ 0; Xclock+read for 125ns SOCX2 data (SOCX+READ) @ 1 ; SOCX+read for 250ns READ3 data READ @ 2 ; READ for 375ns READ1 data READ @ 0 ; READ for 125ns READ24 data READ @ 23 ; READ for 3000ns ; TINT equ 1000 ; base time in milliseconds TINTC equ 2 ; TINT / .5 sec TINTB equ 250 ; 500 msecs TINTA equ 200 ; 2000 usecs nreset equ 0 ; how many reset to perform ; Global start, page 0 org 0 start outm smallnoharm ; 20 usec of void ; ; We perform some reset startr loadc nreset ; number of reset to perform resl0 ; init of frame (wf10) outm VOID2 ; all quiescent (250 nsec) outm YINIT ; Y sync (1 usec) outm VOID2 ; all quiescent (250 nsec) outm XINIT ; X sync ( 375ns) outm VOID2 ; all quiescent (250 nsec) ; reset loop (loop on 512 row, 512 times wf70) loadb ROWSL ; ROWS > 256 we split in 4 parts resl1 loada ROWS4 ; init of row counter resl2 outm VOID1 ; all quiescent (125 nsec) outm LINE1 ; Y clock (125 nsec) outm VOID3 ; all quiescent (375 nsec) outm RES5 ; Reset (625 nsec) outm VOID1 ; all quiescent (125 nsec) ; end of inner loop loopa resl2 ; end of intermediate loop loopb resl1 ; loop on many resets loopc resl0 ; Reading frame: first read ; init of frame (wf10) outm VOID2 ; all quiescent (250 nsec) outm YINIT ; Y sync (1 usec) outm VOID2 ; all quiescent (250 nsec) outm XINIT ; X sync ( 375ns) outm VOID2 ; all quiescent (250 nsec) ; begin of loop on row (512) loadd ROWSL ; ROWS > 256 we split in 4 parts read1 loadc ROWS4 ; init of row counter read2 ; yshift (wf20) outm VOID1 ; all quiescent (125 nsec) outm LINE1 ; Y clock (125 nsec) ; ; init of a row (wf50) outm XSYNC5 ; XSYNC+READ (625 nsec) outm READ3 ; READ (375ns) outm PIXEL3 ; PIXEL+READ (375ns) outm READ1 ; READ (125 ns) ; ; begin of loop on columns (512) loadb COLL ; Columns > 256 we split in 4 parts read3 loada COL4 ; init of row counter read4 ; ; we read a pixel (wf50): outm READ24 ; READ (3000 ns) outm PIXEL1 ; PIXEL+READ (125 ns) outm SOCX2 ; SOCX+READ (250 ns) outm READ1 ; READ (125 ns) ; ; end of inner pixel loop loopa read4 ; end of intermediate pixel loop loopb read3 ; end of inner row loop loopc read2 ; end of intermediate row loop loopd read1 ; ; integration time ; Here we start TINT tint loadc TINTC ; TINT / .5 seconds tintc loadb TINTB ; each unit is worth 2 msec tintb loada TINTA ; each unit is worth 10 usecs tinta outm BASE10 ; base delay - 10 usec loopa tinta ; inner loop loopb tintb ; medium loop loopc tintc ; outer loop ; Reading frame: second read ; init of frame (wf10) outm VOID2 ; all quiescent (250 nsec) outm YINIT ; Y sync (1 usec) outm VOID2 ; all quiescent (250 nsec) outm XINIT ; X sync ( 375ns) outm VOID2 ; all quiescent (250 nsec) ; begin of loop on row (512) loadd ROWSL ; ROWS > 256 we split in 4 parts read6 loadc ROWS4 ; init of row counter read7 ; yshift (wf20) outm VOID1 ; all quiescent (125 nsec) outm LINE1 ; Y clock (125 nsec) ; ; init of a row (wf50) outm XSYNC5 ; XSYNC+READ (625 nsec) outm READ3 ; READ (375ns) outm PIXEL3 ; PIXEL+READ (375ns) outm READ1 ; READ (125 ns) ; ; begin of loop on columns (512) loadb COLL ; Columns > 256 we split in 4 parts read8 loada COL4 ; init of row counter read9 ; ; we read a pixel (wf50): outm READ24 ; READ (3000 ns) outm PIXEL1 ; PIXEL+READ (125 ns) outm SOCX2 ; SOCX+READ (250 ns) outm READ1 ; READ (125 ns) ; ; end of inner pixel loop loopa read9 ; end of intermediate pixel loop loopb read8 ; end of inner row loop loopc read7 ; end of intermediate row loop loopd read6 rest 0 end