Newsgroups: comp.robotics
Path: brunix!uunet!sun-barr!cs.utexas.edu!sdd.hp.com!usc!snorkelwacker.mit.edu!news.media.mit.edu!fredm
From: fredm@media.mit.edu (Fred G Martin)
Subject: MiniBoard high speed bus
Message-ID: <1992Aug14.141218.5105@news.media.mit.edu>
Sender: news@news.media.mit.edu (USENET News System)
Organization: MIT Media Laboratory
References: <bws.7@ccs.carleton.ca>
Date: Fri, 14 Aug 1992 14:12:18 GMT
Lines: 63

In article <bws.7@ccs.carleton.ca> bws@ccs.carleton.ca (Brian
Sullivan) writes: 

>One question. The documentation talks about a high speed bus. 
>What is it used for, and does the library provide any way to
>use it?


I have not yet written library functions to use the high-speed bus.
The hardware has been tested though.  The basic functionity is
provided by the SPI (Serial Peripheral Interface) intrinsic to 6811's
and many other Motorola microprocessors.

The way the Mini Board uses the SPI is as follows: one board chooses
to become network master, and one or more other boards must choose to
become network slave.  The master then controls the data flow: it
shifts a byte of data bits out on its MOSI (Master Out Slave In) line,
while receiving bits from the slave on the master's MISO (Master In
Slave Out) line.  (While multiple slaves may *receive* a transmission
from the master, only one is allowed to respond.) 

All slaves receive the master's data on their MOSI lines (the same
line that is output for a master is input for a slave!); the one
replying slave writes data back to the master---at the same time as
the data is coming in from the master---by use of its MISO line.  You
can see that this means that all the 6811 MOSI lines are wired
together; same with the MISO lines.

The master generates the clock which is synchronized to the data on
the SCK line (which also connects in parallel to all 6811's).

Motorola's SPI port also has a Slave Select (SS) line, which allows
the construction of hardware-selectable network locations.  This
requires the addition of extra non-6811 hardware---typically a
latch and a comparator, which selects a slave when the appropriate
number is written to the latch.

In the MiniBoard, extra hardware is eschewed.  The SS line is wired to
be always true, so slaves are always selected.  This means that a
network protocol must be constructed in software.

I mentioned earlier that only one of the slaves may respond to the
master's message at any given time (otherwise, there will be bus
contention on the MISO lines).  You may ask, ``How is this possible,
given that slaves are always selected by the hardware?''  The answer
is that slaves can disable their transmissions while they still are
active to receive data.  This is done by turning off the output enable
bit on the MISO line.  A slave in this configuration can "listen" for
network bytes, and pipe up to respond only when network protocol has
selected it.

If anyone goes ahead and implements a protocol, please post the code!
I'm sure others would appreciate it too.

If you want all the gory details on the SPI systems, get your hands on
some Motorola 6811 doc's.


	- Fred 


Fred Martin | fredm@media.mit.edu | (617) 253-7143 | 20 Ames St. Rm. E15-301
Epistemology and Learning Group, MIT Media Lab     | Cambridge, MA 02139 USA
