libftdi Archives

Subject: Re: Streaming byte transfers

From: Rick Walker <walker@xxxxxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx, bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Date: Fri, 04 Oct 2013 13:51:18 -0700
Hi Uwe,

Thank you for your response!

> We have the FT2232(without H) transmitting CR terminated ASCI data at quite
> high rate. One 1Mbyte/sec  is ambious, as usable bulk transfer rate is only
> http://www.cypress.com/?id=4&rID=29825
> "The maximum you can achieve is about 8.704 Mbits/sec".
> The system virtual comm port can be used for read/write, so on a recent PC
> side the PC should not be the limiting factor. PC cares for having enough
> USB read/write requests pending to keep the UAB and FT busy.

What I need is a stream of bytes delivered without hiccups at about
1MB/s.  Very much like a sound card.  If I were to connect the
bytestream to an 8bit DAC, I should be able to generate a low-jitter
waveform for as long as the host application keeps sending data. 

I am currently using an FT232 chip in serial mode going to a PIC.  By
the time I have a 200kbaud high priority interrupt to unpack the data
and manage flow control, a main routine to interpret the (compressed)
data, and another interrupt routine to dole it out at precise times, I
am limited to about 20kbytes per second throughput. 

This is for driving stepper pulses in a CNC application, so it is
critical that there are no gaps in the byte stream once the application
starts to fill the pipeline. 

> We have the FT2232H transfer block formatted binary data at 15 MByte/s + in
> synchronus mode. Async mode will easy go above 1 MByte, as it uses USH High
> speed vs full speed on the FT232R. An FPGA on the FT side will also help to
> mantain bandwidth.

So, my question is whether the FT2232H can produce continuous byte
streams on a fixed output clock at 1MByte/sec without requiring an FPGA
to do further FIFO storage?  I wasn't able to get this kind of operation
from an FT245.  The resulting byte stream in bitbang mode had horrible
stuttering due to random FIFO starvation. 

> However for both implementation I would refrain to use this setup for time
> critical applications with time requirements smaller than one USB microframe
> (125 us). At the time of using the FT2232(without H), also a USB 2 hub in
> between the FT and the PC helped. Than the PC saw a USB-2 device and used USB
> microframes versus normal USB frame (1 millisecond) without the hub. The
> situation may have changed however in between.

I have no care about latency.  I'm only interested that the byte stream
not be broken once I start my data dump.  I also don't mind up to 10%
timing jitter on the bytestream clock, it just can't skip bytes once the
pipe is full. 

I suppose the best way to find out is to build a board and test
it.  

There were some discussions a few years ago where FTDI admitted a bug in
the FIFO circuitry on the FT245 and projected that future chips might
work better.  I am inquiring with the hope that this information might
already be known and save me a bit of experimentation. 

I've search for variants of "FTDI sound card", "FTDI arbitrary waveform
generator", and "FTDI synchronous byte stream".  If the chip was capable
of a smooth unbroken byte stream transfer, it would be tempting to just
hang a DAC on the output to make a nice arbitrary waveform generator. 
There is one old paper that mentions this topology, and it uses the
FT245.  I think it doesn't really work.  When I tried to duplicate the
setup, the bytestream had glitches. 

I'm expecting that I will need to use an FPGA to further buffer the
datastream.  This is something I haven't done before and would like to
avoid if possible. 

kind regards,
--
Rick Walker



--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread