Functional Description


We propose to design a CMOS chip that will serve as the primary control for an autonomous robot. This functional specification will address the following topics: what the robot does, the state machine, I/O behavior, the robot's search algorithm, the ALU, register requirements.

Overview

The autonomous robot is designed to explore and map an unknown world, which is represented by a 5x5 matrix. Included in the robot's world are a starting point, a goal, and various obstacles. The robot is only allowed to move from its present space to an adjacent space. In addition, the robot has a bumper connected to a digital input. This will allow the processor to know when the robot has hit a wall. The chip controls the decision making process as well as the movement of the robot via outputs to motors. Control lines allow interface with the chip for debugging purposes, as well as uploading and downloading data.

State Machine

A state machine will be designed to serve as the primary control. This FSM will incorporate modes for I/O communications, search algorithm stepping, and diagnostics. We anticipate using a five bit register to keep track of the various states.

I/O Behavior

Inputs include multiplexed control lines to load and dump data, as well as to interrogate the ALU and buses for diagnostic purposes. There will also be a one or two bit bi-directional data line, as well as a digital input for the robot's main sensor. Outputs include motor control bits. Other possible outputs include run-time status bits.

Search Algorithm

The search algorithm for the robot is composed of a deterministic, trial-and-error based protocol. The robot's world consists of 25 cells, which contain two bits of state data: unexplored, empty, obstacle, and dead end. The robot will attempt to move towards the goal via empty or unexplored cells. Cells that do not lead to the goal (determined by the algorithm) are labeled dead ends. As the robot continues exploration, more and more cells become dead ends. The algorithm itself is very simplistic, using an internal map matrix to keep track of its interaction with the world.

ALU

The chip will require a simple ALU with 3 bit increment, decrement, and compare. There may be specialized compare functions for scanning rows and columns in the map matrix.

Register Requirements

As stated previously, the chip will require 2 matrices, a world matrix and a map matrix. Due to limitations in the testing software, the world map must be loaded at run time. However, in real-world (non-testing) situations, the world map will not be used, only the external sensor. Both matrices are 5x5 cells, but the map matrix has 2 bit cells while the world map contains 1 bit cells. Known registers include Starting Position (6 bits), Goal (6 bits), Current Position (6 bits), Direction (2 bits), and Control State (5 bits).