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.
High speed USB devices
Started by ●April 3, 2011
Reply by ●April 5, 20112011-04-05
Reply by ●April 12, 20112011-04-12
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
Reply by ●April 12, 20112011-04-12
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?
Reply by ●April 13, 20112011-04-13
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
Reply by ●April 13, 20112011-04-13
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.