Implementation of a PC-based motion controller/robot controller with USB interface [4]

USB Comminication speed between a host computer/board and the motion-control FPGA.

1. Experiment setup.  

  • 1530-byte round-trip test.
  • Asynchronous FIFO mode of the FT2232H.

2. Experiment results.

  • PC running a plain Linux: about 50 Mbits/sec.
  • Raspberry Pi 2 running a realtime Linux:  at least 30 Mbits/sec.

Implementation of a PC-based motion controller/robot controller with USB interface [2]

 

PC-based motion controller with USB interface:

motion-control-fpga-ft2232h

 

Examples of FPGA board with USB interface:

  • FlashLink module (Xilinx Spartan-3).
  • Saturn module (Xilinx Spartan-6).
  • Morph-IC-II FPGA Development Module (Altera Cyclone II).

 

FTDI FT2232H  for USB interace:

1. Interface A port of the FT2232H: asynchronous FIFO mode.
2. Interface B port of the FT2232H: UART mode.

Connecting FT2232H to FPGA module:

1. XFC-XC3S50AN FPGA module and FTDI FT2232H mini module:

VCCAUX of the FPGA = 3.3V

fpga-ft2232h-modules-setup-1

 

2. Open3S3500E board and the FTDI FT2232H mini module:

VCCAUX of the FPGA = 2.5V

fpga-ft2232h-modules-setup-2

Serial communication via USB

1. USB-to-UART bridge (UART mode)

(1) Setup

  • Host: Linux PC, Ubuntu 14.04, ftdi_sio driver.
  • Target: FTDI FT232H.
  • Baud rate: 12 M.

um232h-loopback

(2) Loopback test result: 

  • round-trip time of 128 bytes: 1.48 ms  —> 0.173 Mbaud (= 1.38 Mbits/sec)

 

2. USB-to-FIFO bridge (asynchronous FIFO mode)

(1) Setup

  • Host: Linux PC, Ubuntu 14.04, libftdi 1.2 user-space driver.
  • Target:  FTDI FT2232H + Xilinx FPGA. 
  • Baud rate: 8 M.

ft2232h-flashlink

(2) Loopback test results :

  • round-trip time of 128 bytes  with 25 MHz FPGA clock: 0.13 ms  —> 1.97 Mbaud  (= 15.8 Mbits/sec)
  • round-trip time of 1530 bytes with 25 Mhz FPGA clock: 0.79ms —> 3.87 Mbaud (= 31.0 Mbits/sec)
  • round-trip time of 1530 bytes with 50 MHz FPGA clock: 0.48ms —> 6.38 Mbaud  (= 51.0 Mbits/sec)