4 Implementation on FPGA

Mainly two different approaches can be used for the implementation of the locomotion controller:

  1. Using a conventional microprocessor system, either centralized (a CPU that controls all the modules) or distributed (every module has its own embedded CPU, connected by a network). All the functionality is implemented in software. In order to add a hardware controller, a new printed circuit board design would be needed.
  2. Using an FPGA system. Different hardware/software architectures can be designed and tested. Some subsystems could be implemented by hardware, while others by software.
We have focused on the second approach: a centralized FPGA systems. All the locomotion controller is embebed on the FPGA. The movement generator, as well as the control tables, are implemented by software. We have used the soft-processor Microblaze. Algorithms are coded in C language, first tested on a Linux PC and then ported to Microblaze, using the GCC Cross compiler[13], supplied by the FPGA manufacturer.

The position controller is a hardware unit, written in VHDL, that acts as a peripheral for the MicroBlaze. Software can access to this unit through ports, mapped on the main memory. The positions for the 8 servos are stored in the corresponding ports, where the position controller read them and generates the PWM signal. Then main advantage of this hardware devices is its scalability. In order to control more servos, new controllers can be mapped, without physical redesign of the board, always limited to the resources available on the FPGA: the area and pins available.

Juan Gonzalez 2004-10-08