EmbeddedRelated.com
Forums
Memfault Beyond the Launch

High speed USB devices

Started by Mikko OH2HVJ April 3, 2011
On 04/05/2011 08:44 PM, Mikko OH2HVJ wrote:
> Christopher Felton<noemail@now.com> writes: > >> In most cases we have seen the bottle-necks on the PC side. The FX2 >> with the default 512 EP FIFO was sufficient to get to ~30MB/sec. The >> buffering and threading on the PC side has to be handled carefully. >> It will depend on the drivers you are using on the PC, how often you >> get the data (poll or block), and how many threads. > > Fortunately in this application we'll have almost full control of the PC. > The first version will be using the common consumer-grade OS, but later > on there will be a custom Linux box on the other end of the USB. > > We'll have a buffer for a few frames, so matching the sensor timing with > USB traffic is 'easy'.
In my experience, with a FPGA + USB 2.0 PHY and Linux host with a decent driver it is possible to get almost theoretical throughput (minus normal protocol overhead). In my case, saving the data to a hard drive was the bottleneck, but that was a few years ago when drives were a lot slower.
Mikko OH2HVJ skrev 2011-04-03 20:26:
> Hi, > > I'm building a custom USB-camera. There will be an FPGA chip doing some simple > data handling for the sensor data and after that the image needs to be > transmitted to a PC or an embedded Linux computer. > > Estimated raw data rate is almost 30 megabytes per second without any > compression. Basically a single endpoint is enough for the task. > > What are the available chips in addition to Cypress FX2, NXP ISP1581 ? > > And how much compression will I be needing, i.e. what is the best performance > available ? >
If you are going to connect it to an embedded Linux, why not put the FPGA inside the Linux box, and run a faster interface? The AT91SAM9M10 has a a dual bus structure, so you can put the FPGA on the secondary bus, and DDR2 on the primary bus and move data using high speed DMA. DDR2 supports 533 MB/s peak so you will be using < 10 % of the bandwidth. What is the Linux box (or PC) going to do? Best Regards Ulf Samuelsson
On Apr 12, 3:19=A0pm, Ulf Samuelsson <u...@a-t-m-e-l.com> wrote:
> Mikko OH2HVJ skrev 2011-04-03 20:26: > > > Hi, > > > I'm building a custom USB-camera. There will be an FPGA chip doing some=
simple
> > data handling for the sensor data and after that the image needs to be > > transmitted to a PC or an embedded Linux computer. > > > Estimated raw data rate is almost 30 megabytes per second without any > > compression. Basically a single endpoint is enough for the task. > > > What are the available chips in addition to Cypress FX2, NXP ISP1581 ? > > > And how much compression will I be needing, i.e. what is the best perfo=
rmance
> > available ? > > If you are going to connect it to an embedded Linux, > why not put the FPGA inside the Linux box, and run a faster interface?
Actually, he would need both. Parallel to Serial on the device side and Serial to Parallel on the Linux side.
> What is the Linux box (or PC) going to do?
Compression?
Ulf Samuelsson <ulf@a-t-m-e-l.com> writes:
> If you are going to connect it to an embedded Linux, > why not put the FPGA inside the Linux box, and run a faster interface?
The camera has to be small&light with about 1.5m very flexible cable. And we'd like to start the project using a PC and later move to the custom Linux box.
> What is the Linux box (or PC) going to do?
Video compression, simple UI and networking. The first one requiring some DSP power or a codec core. -- Mikko
On Apr 13, 11:08=A0am, Mikko OH2HVJ <oh2...@sral.fi> wrote:
> Ulf Samuelsson <u...@a-t-m-e-l.com> writes: > > If you are going to connect it to an embedded Linux, > > why not put the FPGA inside the Linux box, and run a faster interface? > > The camera has to be small&light with about 1.5m very flexible cable. And > we'd like to start the project using a PC and later move to the custom Li=
nux box.
> > > What is the Linux box (or PC) going to do? > > Video compression, simple UI and networking. The first one requiring some=
DSP power or
> a codec core.
I assume you want more than 640x480, than you might need more than 480M to move the raw data. You might need multiple USB or PCIx.

Memfault Beyond the Launch