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 [3]

Motion-control FPGA:  

  • Reads the  status of external sensors and servo drives and sends it  to the PC. 
  • Receives commands from  the PC and writes them to external devices and servo drives.

 

Internal structure of the motion-control FPGA:

motion-control-fpga-1

  1. command-pulse-generator module: generating command pulses for servo drives.
  2. quadrature-counter module: counting quadrature  pulses from servo drives.
  3. output-latch module: latching parallel output signals  to external devices and servo drives.
  4. input-latch module:  latching parallel  input signals from external sensors and servo drives.
  5. USB-interface module: reading/writing data from/to  USB bus. 
  6. Finite-state-machine module: controlling  the data flows among the above modules.

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

Design of a motion-control ASIC/FPGA

Assuming all the compulations are done by a PC or an external processor,  I designed a motion-control FPGA  as follows: 

motion-control-fpga

 

If a soft processor such as MIcroBlaze or  Nios II  is placed on the FPGA,   construction of a standalone motion controller (without a PC or an external processor)  is possible.

Because both MicroBlaze and NIOS II are Linux/Xenomai-ready, porting Linux/Xenomai software to MicroBlazer or NIOS II is trivial.   

Structure of motion control boards

1.  Typical structure of motion control boards

motion-control-asic

 

2.  Structure of   “advanced” motion control boards 

motion-control-asic-1

 

3. Structure  of a “simple” FPGA-based motion control board

motion-control-board-usb

  • Function blocks of the  FPGA:
    (1) command pulse generator
    (2) encoder pulse counters
    (3) I/O latches