The central processing unit
of the smart system is the
Digilent Nexys2 FPGA
development board. The
development board — based on a
Xilinx Spartan 3E FPGA —
includes integrated USB2.0 ports,
a large number of I/O acquisition
ports, a data port, and expansion
connectors.

We used FPGA as the main
chip and transformed an ordinary supermarket cart. This
transformation can be divided into two basic categories:
electronic parts and mechanical parts.

Electronic parts include infrared sensors to detect
objects, ultrasonic sensors to detect the distance between
the cart and people, a wireless video camera to capture
images for the tracking algorithm, supermarket electronic
scanning to get information on products, an LCD to display
the price, and RFID and wireless communication to
exchange data with the server. Mechanical parts include the
cart chassis assembly and motor drive.

tracking state) to meet the demands of the user. There are
always different control signals coming from different I/O
interfaces in different states. So, by aggregating the various
control signals of functional modules to the top module,
the state machine can use these signals to control the
switching between the different states. The top module
also controls all the actuators (e.g., motors, voice playback
switch, etc.) in different states.

For different functional modules, the system makes
efficient use of the FPGA’s interface features. For example,
the Zigbee wireless communication module is connected
with FPGA through the RS-232 interface. This is an easy

System Theory

This system exploits the FPGA’s programmability,
as well as hardware implementation advantages. We
use parallel data acquisition instead of serial data
collection. System functionality is achieved with six
modules: the top-level module, PWM motor control
module, occurrence and acceptance of ultrasonic
info module, LCD display module, supermarket
electronic scanning module, and wireless
communication control module. The FPGA system
design worked from the top down, using a
component-oriented programming method. By using
this method, functionality of each module can be
independently written, debugged, and optimized.

The top-level module not only sends and
receives control signals from the lower function
modules, but also controls the motors in different
states (e.g., manual driving state and automatic