
AD9125
Rev. 0 | Page 31 of 56
Initializing the FIFO Data Level
To avoid a concurrent read and write to the same FIFO address
and to ensure a fixed pipeline delay, it is important to initialize
the FIFO pointers to known states. The FIFO pointers can be
initialized in two ways: via a write sequence to the serial port or
by strobing the FRAME input. There are two types of FIFO pointer
resets: a relative reset and an absolute reset. A relative reset enforces
a defined FIFO depth. An absolute reset enforces a particular
write pointer value when the reset is initiated. A serial port
initiated FIFO reset is always a relative reset. A FRAME strobe
initiated reset can be either a relative or an absolute reset.
The operation of the FRAME initiated FIFO reset depends on
the synchronization mode chosen. When synchronization is
disabled or when the device is configured for data rate mode
synchronization, the FRAME strobe initiates a relative FIFO
reset. When FIFO mode synchronization is chosen, the FRAME
strobe initiates an absolute FIFO reset. More details on the
synchronization function can be found in the Multichip
Synchronization section.
A summary of the synchronization modes and the type of FIFO
reset employed is listed in Table 15.
Table 15. Summary of FIFO Resets
FIFO
Reset Signal
Synchronization Mode
Disabled Data Rate FIFO Rate
Serial Port Relative reset Relative reset Relative reset
FRAME Relative reset Relative reset Absolute reset
FIFO Level Initialization via Serial Port
A serial port initiated FIFO reset can be issued in any mode
and always results in a relative FIFO reset. To initialize the FIFO
data level through the serial port, Bit 1 of Register 0x18 should
be toggled from 0 to 1 and then back to 0. When the write to the
register is complete, the FIFO data level is initialized. When the
initialization is triggered, the next time the read pointer becomes
0, the write pointer is set to the value of the FIFO phase offset level
(Register 0x17, Bits[2:0]) variable upon initialization. By default,
this is 4, but it can be programmed to a value between 0 and 7.
The recommended procedure for a serial port FIFO data level
initialization is as follows:
1. Request FIFO level reset by setting Register 0x18, Bit 1, to 1.
2. Verify that the part acknowledges the request by ensuring
that Register 0x18, Bit 2, is 1.
3. Remove the request by setting Register 0x18, Bit 1, to 0.
4. Verify that the part drops the acknowledge signal by
ensuring that Register 0x18, Bit 2, is 0.
FIFO Level Initialization via FRAME Signal
The primary function of the FRAME input is indicating to which
DAC the input data is written. Another function of the FRAME
input is initializing the FIFO data level value. This is done by
asserting the FRAME signal high for at least the time interval
needed to load complete data to the I and Q DACs. This
corresponds to one DCI period in dual-word mode, two DCI
periods in word mode, and four DCI periods in byte mode.
To initiate a relative FIFO reset with the FRAME signal, the device
must be configured in data rate mode (Register 0x10, Bit 6). When
FRAME is asserted in data rate mode, the write pointer is set to 4
(by default or to the FIFO start level) the next time the read pointer
becomes 0 (see Figure 48).
012345670123
345670124567
FIFO WRITE RESETS
READ
POINTER
FRAME
WRITE
POINTER
09016-019
Figure 48. FRAME Input vs. Write Pointer Value, Data Rate Mode
Write Pointer Initialization via FRAME Signal
In FIFO rate synchronization mode, the REFCLK/SYNC signal
is used to reset the FIFO read pointer to 0. The edge of the
DAC clock used to sample the SYNC signal is selected by Bit 3
of Register 0x10. The FRAME signal is used to reset the FIFO
write pointer. In the FIFO rate synchronization mode, the FIFO
write pointer is reset immediately after the FRAME signal is
asserted high for at least the time interval needed to load complete
data to the I and Q DACs. The FIFO write pointer is initialized to
the value of the FIFO phase offset[2:0] (Register 0x17). FIFO rate
synchronization is selected by setting Bit 6 of Register 0x10 to 0.
READ
POINTER
WRITE
POINTER
SYNC
FRAME
FIF O READ RESET
FIFO W RI TE
RESET FIFO PHASE OFFSET[2: 0]
REGISTER 0x17, BITS[2:0] = 0b101
01 3210765432
321076566547
09016-148
Figure 49. FRAME Input vs. Write Pointer Value, FIFO Rate Mode
Monitoring the FIFO Status
The FIFO initialization and status can be read from Register 0x18.
This register provides information on the FIFO initialization
method and whether the initialization was successful. The MSB
of Register 0x18 is a FIFO warning flag that can optionally
trigger a device interrupt (IRQ). This flag is an indication that
the FIFO is close to emptying (FIFO level is 1) or overflowing
(FIFO level is 7). This is an indication that data may soon be
corrupted and action should be taken.
The FIFO data level can be read from Register 0x19 at any time.
The FIFO data level reported by the serial port is denoted as a
7-bit thermometer code of the write counter state relative to the
absolute read counter being at 0. The optimum FIFO data level of 4
is, therefore, reported as a value of 00001111 in the status register. It
should be noted that, depending on the timing relationship between
DCI and the main DACCLK, the FIFO level value can be off by
±1 count. Therefore, it is important to keep the difference between
the read and write pointers to at least 2.