Please see below trace from host send 1KB to FX3:
First read is PP_DMA_SIZE, then get the first data.
You also can see the first word have a strange pulse, and the timing is met with FX3 out the data.
Please check the state machine's timing.
You can see the first word D0(data pin 0) was 0. So and I print the data from my MCU also was AAAA(0b10101010) not 5555(0b01010101) with 1KB. So I doubt the pulse which I lost first word(5555) maybe.
Please refer to section 18.104.22.168 Addressing methods which mentions that when PP_MODE =1, the GPIF II hardware decodes the address based on address bit A7. If A7=1, GPIF II interprets the access as a register access and performs a read or write to the register address specified by A[7:0]. If A7=0, then GPIF II interprets the access to be a socket access and performs a read or write operation to the socket number specified in the PP_DMA_XFER register.
So, to access the PP register like PP_DMA_SIZE can be accessed when A7 bit of the address line is 1. Please confirm this is taken care while accessing from the registers an sockets
"While performing register access, the most significant bit of the 8-bit address should be 1, notifying FX3 that it is register access operation. Similarly, for performing socket access, the most significant bit should be set to 0."
Is possible to put some delay between the register access (PP_DMA_SIZE) and the socket access. If yes, please try with some delay between the register access and socket access.
If possible, please share the MCU code snippet where the register is accessed and then data is being read.