FPGA as host for a USB peripheral

Dec 06, 2004 5 Replies

Hi,



I was wondering if anyone in this group can provide some insight as to how hard it might be to get an FPGA to act as a USB host, for collecting data at quite a high-bandwidth. Particularly can this reasonably be done at all with a completely hardware implementation, possibly with an external embedded USB host controller. Or would I be much better off using some kind of soft-core CPU to collect and format data from the USB peripheral due complexity of driving an embedded USB host controller?



Thanks,



- Jake


It's doable in hardware, but extremely complex. The enumeration process needs quite a bit of decisions making.

However, once the enumeration is complete, there is no reason why other endpoints (non-zero) could not be 100% hardware interface pipes.

Not sure what your interpretation of "high bandwidth" is, but USB 2.0 only goes to 480 Mbits/sec, or about 60Mbyes/sec. So it should be quite trivial to do this in FPGA. However you will need a High Speed USB PHY.

Regards, rudi ============================================================= Rudolf Usselmann, ASICS World Services,

formatting link
Your Partner for IP Cores, Design, Verification and Synthesis

Rudi,

Is it possible to "cheat" and reduce this complexity, if I know that I will literally only ever have exactly zero one specific device connected?

Are there any free/commercial IP cores around that could help with this?

It doesn't matter if it can be done completely in hardware. The only reason I wanted to mention high-bandwidth was for the case where I would have to use a soft-core processor as the complexity of driving the USB host controller is too great to be feasible in anything but software. Then of course I would have the consideration that the processor would need to be fast enough to handle passing through the data.

Thanks for the suggestions,

- Jake

Jake,

Yes, thats definitely possible. You could skip a lot of the steps if you know the device that will be attached.

We only have commercial host controller IP Cores. Check our web site for more info.

Well, the control path and data path can be separate. You can have a small low end MCU doing the enumeration, and a pure hardware based data pipe for the endpoints. It all depends on how robust you rimplementation has to be ...

Regards, rudi ============================================================= Rudolf Usselmann, ASICS World Services,

formatting link
Your Partner for IP Cores, Design, Verification and Synthesis

need

Is there a special USB slave device that enumerates and configures hosts?

"Jacob Bower" skrev i meddelandet news: snipped-for-privacy@sprite.doc.ic.ac.uk...

kind

Question is if you can do it cost effectively in an FPGA. If you take an intelligent USB Host like the AT43USB380, you still need an external micro with about 64 kB of memory just for a single driver (for Mass Storage). Maybe your device class is simpler but uyou probably need a soft MCU and around 16 kB of code just to run the USB Host Stack without any device class.

If it is point to point, why need USB at all?

Best Regards, Ulf Samuelsson ulf@a-t-m-e-l.com This is a personal view which may or may not be share by my Employer Atmel Nordic AB

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required