cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer
Observer
395 Views
Registered: ‎06-07-2019

Using the USB protocol to communicate with a PC with the Kintex 7 KC705 Board

Jump to solution

I need to do high speed communication (10-100 Mbps) between the KC705 board and my PC, and the UART protocol is too slow. Please correct me if I'm wrong, but my understanding is that there is a USB-UART Bridge on the board that takes the lower frequency Rx/Tx/Clk signals from the Uartlite IP in the FPGA fabric, increases the clock frequency to USB protocol levels, and sends this to the the COM port of the PC, where the Silicon Labs VCP drivers let the PC interpret the UART-converted-to-USB-protocol data. 

 

I want to bypass this USB-UART conversion process and send USB protocolled data to my PC. I see that there is an "AXI USB2 Device" IP in the catalog, but it seems that it requires a USB PHY that I can't find in the KC705. Is it possible to talk to a PC using the USB protocol? Or is UART the only way?

 

Thanks,

Carlos

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Guide
Guide
362 Views
Registered: ‎01-23-2009

Re: Using the USB protocol to communicate with a PC with the Kintex 7 KC705 Board

Jump to solution

As you suspected, the only USB connectors on the board are the USB-UART and the USB-JTAG (for configuration and debugging) - there is no "native" USB port on the KC705.

While the USB-UART is limited to "reasonable" speed, it can get up to 576000 Baud - that's pretty fast (0.576Mbps), but still well short of the 10-100Mbps that you are looking for.

So your options are limited:

  • Buy a FMC card that has the USB phy on it. I have found only one (a USB 3.0) and it's pretty expensive
    • It will probably need some dedicated hardware on the FPGA (probably available from the FMC card manufacturer) and a driver on the PC
  • Use Ethernet
    • Implementing an Ethernet stack is pretty complicated, and isn't generally something done without a processor on the board - so you would need to build a system with a MicroBlaze to handle some of the protocol stuff in order to manage the Ethernet packets
    • Software on the PC would also be required to initiate the dataflow and manage the data
  • Use PCIe
    • The KC705 can be plugged directly into a PCIe slot (or via a PCIe extender cable) into a PC. With this you can access the board as a PCIe endpoint and have access to massive bandwidth (upto PCIe Gen2 x 8 lanes, which is 40Gbps of raw bandwidth)
    • Getting the PCIe system integrated and recognized by the OS requires a kernel space driver, which needs to be written - it's not simple

All of these solutions are either expensive, or require a lot of infrastructure (or both) - in both the FPGA system and the PC.

The only "simple" one is the UART - you can use a "COM" port on the PC (so no PC driver required) and any of a number of UARTs available in hardware (or write your own - they're pretty simple) - but, as I said, the maximum bandwidth is well short of what you are asking for.

Avrum

View solution in original post

2 Replies
Highlighted
Guide
Guide
363 Views
Registered: ‎01-23-2009

Re: Using the USB protocol to communicate with a PC with the Kintex 7 KC705 Board

Jump to solution

As you suspected, the only USB connectors on the board are the USB-UART and the USB-JTAG (for configuration and debugging) - there is no "native" USB port on the KC705.

While the USB-UART is limited to "reasonable" speed, it can get up to 576000 Baud - that's pretty fast (0.576Mbps), but still well short of the 10-100Mbps that you are looking for.

So your options are limited:

  • Buy a FMC card that has the USB phy on it. I have found only one (a USB 3.0) and it's pretty expensive
    • It will probably need some dedicated hardware on the FPGA (probably available from the FMC card manufacturer) and a driver on the PC
  • Use Ethernet
    • Implementing an Ethernet stack is pretty complicated, and isn't generally something done without a processor on the board - so you would need to build a system with a MicroBlaze to handle some of the protocol stuff in order to manage the Ethernet packets
    • Software on the PC would also be required to initiate the dataflow and manage the data
  • Use PCIe
    • The KC705 can be plugged directly into a PCIe slot (or via a PCIe extender cable) into a PC. With this you can access the board as a PCIe endpoint and have access to massive bandwidth (upto PCIe Gen2 x 8 lanes, which is 40Gbps of raw bandwidth)
    • Getting the PCIe system integrated and recognized by the OS requires a kernel space driver, which needs to be written - it's not simple

All of these solutions are either expensive, or require a lot of infrastructure (or both) - in both the FPGA system and the PC.

The only "simple" one is the UART - you can use a "COM" port on the PC (so no PC driver required) and any of a number of UARTs available in hardware (or write your own - they're pretty simple) - but, as I said, the maximum bandwidth is well short of what you are asking for.

Avrum

View solution in original post

Highlighted
Observer
Observer
292 Views
Registered: ‎06-07-2019

Re: Using the USB protocol to communicate with a PC with the Kintex 7 KC705 Board

Jump to solution
Great tips, thank you
0 Kudos