Mainly two different approaches can be used for the implementation
of the locomotion controller:
- 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.
- 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.
Subsections
Juan Gonzalez
2004-10-08