I'm pretty sure that Async 245 FIFO mode is compatible with the way that you have wired the signals for CPU FIFO mode.
I've not yet got it to work correctly in CPU FIFO mode, for reasons I don't understand. It seems to be dropping data. Note the lower data rate:
CPU FIFO mode is configured by the EEPROM. You can't configure it over the wire. The module will still be in CPU FIFO for all your tests I imagine unless you reprogrammed the EEPROM.
CPU Utilization is ~80% compared with ~2% in Async 245 FIFO mode. So something is very different.
Sounds like a driver problem. Why should there be any difference the PC end between FT232H modes? The driver could be doing something stupid like requesting a single byte per USB frame or something... High CPU usage is why it is dropping frames.
Is there any reason you picked CPU FIFO mode rather than Async 245 FIFO mode?
Yes. It matches the bus more closely & doesn't have the !RXF (!CS in CPU FIFO) & !TXE (A0 in CPU FIFO) signals. It also allows you to query the FIFO status on the host. RXF & TXE are outputs so they will be clashing with PLD CS output & A0 respectively.
But as I said I think the FT232H will be in CPU FIFO mode anyway because that is the EEPROM configured mode.
TO prove one way or the other, remove the PLD (& short J4 1-2) and scope RXF & TXE to see if they are outputs... or try switching to bi-dir comms mode and write a BASIC program to query they status and read/write or echo some data... if you get valid FT232H FIFO status then you must
be in CPU FIFO - regardless of what the driver thinks.
Edit: It really ought to still be in CPU FIFO mode...
Section 4.13 of the FT232H datasheet
4.13 FT232H Mode Selection
The FT232H defaults to asynchronous serial interface (UART) mode of operation.
After a reset the required mode is determined by the contents of the external EEPROM which can be
programmed using FT_Prog.
The EEPROM contents determine if the FT232H device is configured as FT232 asynchronous serial
interface, FT245 FIFO interface, CPU-style FIFO interface, FT1248 or Fast Serial Interface.
Following a reset, the EEPROM is read and the FT232H configured for the selected mode. After device
enumeration, the FT_SetBitMode command (refer to D2XX_Programmers_Guide) can be sent to the
USB driver to switch the selected interface into other modes – asynchronous bit-bang, synchronous bitbang
or MPSSE – if required.
When in FT245 FIFO mode, the FT_SetBitMode command can be used to select Synchronous FIFO
(FT_SetBitMode = 0x40). Note that FT245 FIFO mode must be configured in the EEPROM before
selecting the Synchronous FIFO mode.
The drive strength selection, slew rate and Schmitt input function can also be configured in the EEPROM.
The MPSSE can be configured directly using the D2XX commands. The D2XX_Programmers_Guide is
available from the FTDI website. The application note AN_108 – Command Processor for MPSSE and MCU
Host Bus Emulation Modes gives further explanation and examples for the MPSSE.