T
Theo Markettos
Guest
I've been pondering...
When it comes to attaching an FPGA to a PC, there are lots of options.
First there's JTAG, then there's RS232, then there's ethernet, and PCIe.
But there's an elephant in this room: why is USB on FPGA so hard?
Sure, every FPGA can be connected to a PC with USB, but it's usually through
a dumb bridge chip that does RS232, or maybe uses USB to bitbang JTAG. USB2
is in 'easy' territory for FPGAs at 480Mbps, while USB3 5Gbps is the same
bitrate as PCIe Gen 2. Every PC made in the last 15 years has USB.
Meanwhile, being stuck behind a bridge chip we manage single-figures Mbps.
Now there are dev boards out there with USB PHY or USB MAC chips on them,
which is all very nice, but all very painful to program. Plus they're never
there when you need them. But why should this be necessary? Any $2 junk
gadget comes with a USB2 device interface these days - I don't know what fab
process they use, but it can't be too fancy. Likewise USB microcontrollers
are a few dollars.
I realise the USB stack isn't the most friendly to implementation on FPGA -
it doesn't play nicely with FPGA SERDES for example. But if a $2 gadget can
have all the functions of a USB device on an antique process node, why don't
modern FPGAs have at least native USB2 device mode?
Theo
When it comes to attaching an FPGA to a PC, there are lots of options.
First there's JTAG, then there's RS232, then there's ethernet, and PCIe.
But there's an elephant in this room: why is USB on FPGA so hard?
Sure, every FPGA can be connected to a PC with USB, but it's usually through
a dumb bridge chip that does RS232, or maybe uses USB to bitbang JTAG. USB2
is in 'easy' territory for FPGAs at 480Mbps, while USB3 5Gbps is the same
bitrate as PCIe Gen 2. Every PC made in the last 15 years has USB.
Meanwhile, being stuck behind a bridge chip we manage single-figures Mbps.
Now there are dev boards out there with USB PHY or USB MAC chips on them,
which is all very nice, but all very painful to program. Plus they're never
there when you need them. But why should this be necessary? Any $2 junk
gadget comes with a USB2 device interface these days - I don't know what fab
process they use, but it can't be too fancy. Likewise USB microcontrollers
are a few dollars.
I realise the USB stack isn't the most friendly to implementation on FPGA -
it doesn't play nicely with FPGA SERDES for example. But if a $2 gadget can
have all the functions of a USB device on an antique process node, why don't
modern FPGAs have at least native USB2 device mode?
Theo