Let me know if I am describing your system correctly:
You configure the board for AO, load the FIFO, and start the waveform generation. You keep the FIFO full by an interrupt service routine (ISR). While the AO generation is continuing, only the ISR accesses registers on the board.
At the start of the ISR, it reads the AO_Status_1 register and normally reads 0x8023 (Interrupt_B_St, AO_UPDATE_St, AO_FIFO_Request_St, and Pass_Thru_1_Interrupt_St). After the ISR fills the FIFO it checks the AO_Status_1 register a second time and reads 0x2021 (AO_FIFO_Half_Full_St, AO_Update_St, and Pass_Thru_1_Interrupt_St).
The error occurs when the ISR first reads AO_Status_1 and sometimes reads 0xFFFF instead of the expected value(0x8023). No code other
than the ISR accesses STC registers after generation starts.
If all the above is true, then we can be fairly sure that the ISR is not actually reading the AO_Status_1 register when it gets the error. For instance, the G1_TC_St shouldn't assert in relation to AO generation.
It looks like the ISR is reading an address that does not contain a readable register. This might be caused by a race condition involving windowed register accesses. It may be caused by an incorrect register address, by a loose PCI card, or possibly bad hardware.
Check if other register reads are also 0xFFFF, which would indicate confirm that the problem is not specific to AO_Status_1. You could log a timestamp of each ISR entry and exit to check for race conditions. You could also re-seat the PCI card, or swap it out with a backup if available.