FTDI Community

General Category => Discussion - Drivers => Topic started by: deanon on April 26, 2021, 12:07:19 PM

Title: FT3XX latency issue
Post by: deanon on April 26, 2021, 12:07:19 PM
Hi, I'm developing FPGA based audio interface that requires very short roundtrip, and currently I'm stuck with driver performance at small buffer size.
Audio data frame is 64 bytes and I need to minimize its path to PC (win 10) and back.
The problem is that driver, it seems, has internal FIFO that is always kept filled.
I'm estimating this value based on counter looped through device, that is copied on device side from received buffer.
Count of buffers stuck between application and device is near 4100 +-1, so, given 64 bytes sample size it is likely there is 4100*64 buffer somewhere on the data path. With 62500 sample rate it gives above 3ms latency (in each direction), which is inacceptable for the project.

Is there a way to reduce internal buffer size?

I really believe such data processing scenario is possible at least on driver side, audio hardware usually have that low latency even on usb2 interfaces.
Title: Re: FT3XX latency issue
Post by: FTDI Community on April 27, 2021, 02:06:51 PM
Hello,

When using bulk USB transfers, it is better to buffer up several readings and then transfer these together. Bulk USB works more efficiently when transferring in larger data packets compared to sending lots of small packets.

The Bulk mode does not offer guaranteed latency and so may also not work in all cases if you want to stream the data in real time where any delay will be noticeable. Many of the USB audio devices which you mentioned on USB2 use the isochronous transfer type which get schedules to offer more consistent latency by the host.

We have the FT602 which uses UVC class instead and so for video-based applications this device would suit well,

Best Regards, FTDI Community
Title: Re: FT3XX latency issue
Post by: deanon on April 27, 2021, 09:10:51 PM
So, there is no tweaking that could help to reduce latency with FT600 ?