I am considering FX3 for my new design. It is a nice piece of hardware. I like to ask:
- I will implement a custom USB driver that takes data from my FPGA and sends to PC. The data needs to be send with high bandwidth and low latency. I would use DMA for this operation. However the datasheet says something very peciluar.
"■ As a USB peripheral, FX3 supports UAS, USB Video Class (UVC), Mass Storage Class (MSC), and Media Transfer Protocol (MTP) USB peripheral classes. As a USB peripheral,all other device classes are supported only in pass-through mode when handled entirely by a host processor external tothe device."
It appears, I have to have a second processor to handle my custom USB driver. This doesn't make sense at all.
- What type of throughput I could achieve using this IC assuming I use DMAs efficiently.
there is just the restriction of the GPIF II interface. It is a 32 bit parallel interface which can work at about 100 MHz. So that means you can transfer 400MB/s in AUTO dma channel mode.
What you did read is e. g. if your application is a e. g. UVC, then you need to add a header and a footer to the data. In this case when you need to add data with the arm core of FX3, then you need to configure the DMA channels as manual. And then you can not reach same bandwitdth as in auto mode.
If I understand your application correct, then you put the data into the GPIF interface without CPU (arm core) intervention and then you get highest bandwitdth of FX3. Almost 400MB/s there is a little bit lesser while switching dma buffers when the FLAG is asserted.