A few months ago I did some research on the web for implementing USB on an FPGA, I came across several articles that hinted that it was not possible for complete USB implementation on an FPGA citing the following concerns
- The voltage levels of USB data lines are in 3.3V range while FPGA runs on 3.3 or 1.2 logic levels. (i was a bit skeptical regarding this since PIC24F which work on 3.3V supply have implemented USB hardware on chip)
- USB requires embedded software that needs to be implemented on a MCU that will work in tandem with the hardware part of USB.
Today I came across an FPGA dev board, The Orange Crab where the USB pins were directly to the FPGA. Its an open source board with schematics available to be checked out.
Citing from that page
Direct USB connection to the FPGA (Operate as a DFU, MSC, CDC, or composite device!)
I began to wonder how would they be implementing the USB inside the FPGA and the resources that would be necessary for that. Would they for instance instantiate a soft CPU core inside the FPGA and then handle the necessary USB code on it using a C library for the USB framework. Wouldn't that be a terrible waste of FPGA resources, instead of just using an external FTDI chip to offload the USB part?
It would be interesting to know if my hunch is correct or is it really possible to do USB completely in hardware and how?