The LVDS outputs can be scrambled in order to reduce spectral peaks in the output data, especially for repeating patterns. Spectral peaks can couple back to the ADC analog input and result in degraded noise or spurious performance in the ADC output data. Enable scrambling by setting SCR in the LCTRL register. The scrambler does not require any memory (only uses the current sample) and uses simple XOR operations in order to minimize latency. Scrambling does require the two LSBs of each sample to be random (as is the case for ADC input thermal noise), but also works when the LSB is used as a strobe or timestamp. The scrambler is enabled by setting SCR in the LCTRL register to 1. The scrambling operation changes slightly depending on the LWIDTH parameter, as Table 6-12 to Table 6-15 describes. Each table also describes the descrambling operation that the receiving device must implement in order to recover the original samples. In Table 6-12 to Table 6-15, d[x] corresponds to bit x of the unscrambled digitized ADC sample at LVDS bus q (q = A, B, C, or D) before scrambling and y[k] corresponds to the scrambled bit k output from the interface over data pair Dqk±. Likewise, strobe is the unscrambled strobe signal at the LVDS bus q (q = A, B, C, or D) and strobe_y is the scrambled strobe output on data pair DqSTR±. The ⊕ symbol denotes the bitwise XOR operation.
Table 6-12 Scrambling and Descrambling Operations (12-Bit Mode, LWIDTH = 0x0)SCRAMBLER | DESCRAMBLER |
---|
y[11] = d[11] ⊕ d[1] ⊕ d[0] | d[11] = y[11] ⊕ y[0] |
y[10] = d[10] ⊕ d[1] ⊕ d[0] | d[10] = y[10] ⊕ y[0] |
y[9] = d[9] ⊕ d[1] ⊕ d[0] | d[9] = y[9] ⊕ y[0] |
y[8] = d[8] ⊕ d[1] ⊕ d[0] | d[8] = y[8] ⊕ y[0] |
y[7] = d[7] ⊕ d[1] ⊕ d[0] | d[7] = y[7] ⊕ y[0] |
y[6] = d[6] ⊕ d[1] ⊕ d[0] | d[6] = y[6] ⊕ y[0] |
y[5] = d[5] ⊕ d[1] ⊕ d[0] | d[5] = y[5] ⊕ y[0] |
y[4] = d[4] ⊕ d[1] ⊕ d[0] | d[4] = y[4] ⊕ y[0] |
y[3] = d[3] ⊕ d[1] ⊕ d[0] | d[3] = y[3] ⊕ y[0] |
y[2] = d[2] ⊕ d[1] ⊕ d[0] | d[2] = y[2] ⊕ y[0] |
y[1] = d[1] | d[1] = y[1] |
y[0] = d[0] ⊕ d[1] | d[0] = y[0] ⊕ y[1] |
strobe_y = strobe ⊕ d[1] ⊕ d[0] | strobe = strobe_y ⊕ y[0] |
Table 6-13 Scrambling and Descrambling Operations (11-Bit Mode, LWIDTH = 0x1)SCRAMBLER | DESCRAMBLER |
---|
y[11] = d[11] ⊕ d[2] ⊕ d[1] | d[11] = y[11] ⊕ y[1] |
y[10] = d[10] ⊕ d[2] ⊕ d[1] | d[10] = y[10] ⊕ y[1] |
y[9] = d[9] ⊕ d[2] ⊕ d[1] | d[9] = y[9] ⊕ y[1] |
y[8] = d[8] ⊕ d[2] ⊕ d[1] | d[8] = y[8] ⊕ y[1] |
y[7] = d[7] ⊕ d[2] ⊕ d[1] | d[7] = y[7] ⊕ y[1] |
y[6] = d[6] ⊕ d[2] ⊕ d[1] | d[6] = y[6] ⊕ y[1] |
y[5] = d[5] ⊕ d[2] ⊕ d[1] | d[5] = y[5] ⊕ y[1] |
y[4] = d[4] ⊕ d[2] ⊕ d[1] | d[4] = y[4] ⊕ y[1] |
y[3] = d[3] ⊕ d[2] ⊕ d[1] | d[3] = y[3] ⊕ y[1] |
y[2] = d[2] | d[2] = y[2] |
y[1] = d[2] ⊕ d[1] | d[1] = y[2] ⊕ y[1] |
y[0] = d[2] ⊕ d[1] ⊕ d[0](1) | d[0] = y[1] ⊕ y[0](1) |
strobe_y = strobe ⊕ d[1] ⊕ d[0] | strobe = strobe_y ⊕ y[1] |
(1) Only used if LSB_SEL in the LSB_SEL register is set to 0 and TIME_STAMP_EN is set to 1.
Table 6-14 Scrambling and Descrambling Operations (10-Bit Mode, LWIDTH = 0x2)SCRAMBLER | DESCRAMBLER |
---|
y[11] = d[11] ⊕ d[3] ⊕ d[2] | d[11] = y[11] ⊕ y[2] |
y[10] = d[10] ⊕ d[3] ⊕ d[2] | d[10] = y[10] ⊕ y[2] |
y[9] = d[9] ⊕ d[3] ⊕ d[2] | d[9] = y[9] ⊕ y[2] |
y[8] = d[8] ⊕ d[3] ⊕ d[2] | d[8] = y[8] ⊕ y[2] |
y[7] = d[7] ⊕ d[3] ⊕ d[2] | d[7] = y[7] ⊕ y[2] |
y[6] = d[6] ⊕ d[3] ⊕ d[2] | d[6] = y[6] ⊕ y[2] |
y[5] = d[5] ⊕ d[3] ⊕ d[2] | d[5] = y[5] ⊕ y[2] |
y[4] = d[4] ⊕ d[3] ⊕ d[2] | d[4] = y[4] ⊕ y[2] |
y[3] = d[3] | d[3] = y[3] |
y[2] = d[2] ⊕ d[3] | d[2] = y[2] ⊕ y[3] |
y[1] = 0 (not used) | d[1] = 0 (not used) |
y[0] = d[0] ⊕ d[3] ⊕ d[2](1) | d[0] = y[0] ⊕ y[2](1) |
strobe_y = strobe ⊕ d[3] ⊕ d[2] | strobe = strobe_y ⊕ y[2] |
(1) Only used if LSB_SEL in the LSB_SEL register is set to 0 and TIME_STAMP_EN is set to 1.
Table 6-15 Scrambling and Descrambling Operations (8-Bit Mode, LWIDTH = 0x3)SCRAMBLER | DESCRAMBLER |
---|
y[11] = d[11] ⊕ d[5] ⊕ d[4] | d[11] = y[11] ⊕ y[4] |
y[10] = d[10] ⊕ d[5] ⊕ d[4] | d[10] = y[10] ⊕ y[4] |
y[9] = d[9] ⊕ d[5] ⊕ d[4] | d[9] = y[9] ⊕ y[4] |
y[8] = d[8] ⊕ d[5] ⊕ d[4] | d[8] = y[8] ⊕ y[4] |
y[7] = d[7] ⊕ d[5] ⊕ d[4] | d[7] = y[7] ⊕ y[4] |
y[6] = d[6] ⊕ d[5] ⊕ d[4] | d[6] = y[6] ⊕ y[4] |
y[5] = d[5] | d[5] = y[5] |
y[4] = d[4] ⊕ d[5] | d[4] = y[4] ⊕ y[5] |
y[3] = 0 (not used) | d[3] = 0 (not used) |
y[2] = 0 (not used) | d[2] = 0 (not used) |
y[1] = 0 (not used) | d[1] = 0 (not used) |
y[0] = d[0] ⊕ d[5] ⊕ d[4](1) | d[0] = y[0] ⊕ y[4](1) |
strobe_y = strobe ⊕ d[5] ⊕ d[4] | strobe = strobe_y ⊕ y[4] |
(1) Only used if LSB_SEL in the LSB_SEL register is set to 0 and TIME_STAMP_EN is set to 1.