CA1326275C - Network and intelligent cell for providing sensing, bidirectional communications and control - Google Patents
Network and intelligent cell for providing sensing, bidirectional communications and controlInfo
- Publication number
- CA1326275C CA1326275C CA000616103A CA616103A CA1326275C CA 1326275 C CA1326275 C CA 1326275C CA 000616103 A CA000616103 A CA 000616103A CA 616103 A CA616103 A CA 616103A CA 1326275 C CA1326275 C CA 1326275C
- Authority
- CA
- Canada
- Prior art keywords
- cells
- group
- cell
- bits
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Small-Scale Networks (AREA)
Abstract
ABSTRACT OF THE DISCLOSURE
A network for sensing, communicating and controlling employing a plurality of cells which communicate through packets. First cells are assigned an announcer function, others a listener function with at least one announcer or listener cell also performing the function of repeating at least some of the packets. The cells are organized into groups, each group being assigned a group function. Group identification numbers are included in the packets to allow the cells for a particular group to identify packets intended for it.
A network for sensing, communicating and controlling employing a plurality of cells which communicate through packets. First cells are assigned an announcer function, others a listener function with at least one announcer or listener cell also performing the function of repeating at least some of the packets. The cells are organized into groups, each group being assigned a group function. Group identification numbers are included in the packets to allow the cells for a particular group to identify packets intended for it.
Description
1 3~6~75 l This application is a divisional of application Serial No. 582,032 filed November 2, 1988.
1. Field of the Invention The invention relates to the field of networks with distributed intelligence, configuration and control and intelligent cells used in networks, primarily where the networks are used for sensing, communicating and controlling.
2. Prior Art.
There are many commercially available products which provide sensing, control and communications in a network environment. These products range from very expensive, elaborate systems, to simple systems having little intelligence.
As will be seen, the present invention is directed towards providing a system having a relatively large amount of intelligence and computational power but at a low cost.
One commercially available system "X-10" provides control, by way of example, between a light switch and a light. When the light switch is operated, a code pattern is transmitted over the power lines to a receiver at the light. The code pattern is transmitted twice, once in its true form and once in its complementary form. When the code is received by the receiver, ` it is interpreted, and thereby used to control the light.
Mechanical addressing means are employed to allow the ., : 1 1 326~7~j TABLE OF CONTENTS
BACKGROUND OF THE INVENTION
FIELD OF THE INVENTION
SUMMARY OF THE INVENTION ............................. 3 BRIEF DESCRIPTION OF THE DRAWINGS .................... 6 DETAILED DESCRIPTION OF THE INVENTION ................ 9 OVERVIEW OF AN APPLICATION OF THE PRESENT INVENTION .. 1 0 Il. NETWORK ORGANIZATION AND DEFINITIONS ...... 1 6 A. DEFINITIONS ........................... 1 6 B. GROUP FORMATION ....................... 2 1 C. METHODS OF INDENTIFYING A CELL FOR GROUPING 3 2 1. DIRECT CONNECTION TO THE CELL ........ 3 2 2. SELECTION OF THE CELL THROUGH USE OF
SPECIAL PIN .......................... 3 3 __ 3. aUERY ALL NAMES OF PREVIOUSLY
GROUPED CELLS .................... 3 3 4. STIMULATE GROUP....................... 3 5 5. STIMULATE ANNOUNCER .................. 3 6 6. TOGGLE LlSTENER ...................... 3 7 D. PACKET FORMAT .............................. 3 8 E. MECHANISM FOR PREVENT~NG REBROADCASTING OF
CERTAIN PACKETS ............................ 4 3 F. THREE-OF-SIX COMBINATORIAL CODING ........... 4 6 111. COMMUNICATION AND CONTROL CELL ............ 4 8 A. OVERVIEW OF THE CELL ........................ 4 8 B. PROCESSOR ... ~............................... 5 1C. PROCESSOR OPERATION ......................... 5 6 D. MULTIPROCESSOR OPERATION .................... 5 7 E. PROCESSOR INSTRUCTIONS ...................... 6 6 F. THREE-OF-SIX CIRCUITRY ...................... 9 4 IV. INPUTIOUTPUT SECTION ....................... 9 7 A. GENERAL ................................. 9 7 ( i ) B. BUFFER SECTION ........................... 97 C. I/O COUNTING/TIMING ...................... 9 4 D. I/O CONTROL AND STATE MACHINE ............ 1 0 2 E. ANALOG TO DIGITAL AND DIGITAL TO
ANALOG CONVERSION ........................ 1 O 5 F. I/O COMMUNICATIONS ....................... 1 0 7 G. I/O REGISTERS AND RESOURCE SHARING ....... 1 1 1 V. PROTOCOL .................................. 1 1 8 A. CONTENTION IN GENERAL..................... 1 1 8 B. GROUP ACKNOWLEDGEMENT PACKET CONTENTION ............. 1 2 0 C. COLLISION DETECTION ................................. 122 D. BACKOFF ALGORITHM ................................... 12 4 E. CONTENTION TIMER .................................... 1 25 F. ARQ PROTOCOL ........................................ 1 2 6 G. LINK CONTROL COMMANDS ............................... 130 H. CONNECTION CONTROL................................... 131 I . ABORT SEQUENCE ...................................... 135 J. SYSTEM ID ........................................... 13 6 Vl. GROUPING DEVICE .............................. 1 37 C LAI M S .............................................................................................. 1 4 0 (li' .
, .
.
;, 1 32~275 transmitter at the switch to communicate with the specific desired receiver at the light.
~: As will be seen, the present invention provides substantially more capability and flexibility than current 5 systems.
' :
1 32627'~
SUMMARY OF THE INVEN~ION
A network for providing sensing, communications and control is described. A plurality of intelligent cells each of which comprises an integrated circuit having a processor and 5 inpuVoutput section are coupled to the network. Each of the programmable cells receives when manufactured a unique identification number (48 bits) which remains permanently within the cell. The cells can be coupled to different media such as power lines, twisted pair, radio frequency, infrared ultrasonic, 10 optical coaxial, etc., to form a network.
Networks are distinguished from one another by system identification numbers (IDs). Groups of cells within each network are formed to perform particular functions and are identified by group IDs. Communications occur within the network through use 1~ of the system, group and cell IDs. Some cells (announcers) are assigned the task of sensing, for example, the condition of a switch, and others (listeners) the task of controlling, such as controlling a light. Cells can perform multiple tasks and be members of multiple groups, and, for example, can act as a 20 repeater for one group and a listener in a another group. When manufactured, the cells are identical except for the cell ID; they 1 326~75 are programmed to perform specific tasks for a particular group or groups.
The preferred embodiment of the cell includes a multiprocessor and multiple l/O subsections where any of the 5 processors can communicate with any of the l/O subsections.
This permits the continual execution of a program without potential interruptions caused by interfacing with the l/O
section. The l/O section includes programmable A-to-D and programmable D-to-A converters as well as other circuits for 10 other modes of operation.
The network protocol provides great flexibility, and for instance, allows groups to be formed and/or changed after the cells are in place. As will be seen, the intelligence for the network is distributed among the cells. In general, the network 1~ is lightly loaded, although provisions are made for contention and other conditions which may arise. The communication between t- the cells in general is optimized for carrying out the functions assigned to groups, rather than for transmission of data unrelated to the control function of the network. For this reason, normally 20 the packets carrying messages are relatively short compared to Ethernet, Arpa, AppleTalk, X-25 and many other broadband and data cornmunication systems.
l Accordingly, in one aspect the invention provides a network for sensing, communicating and controlling having a plurality of cells which communicate with one another through packets, a first plurality of said cells being . 5 coupled to sense conditions and for transmitting packets indicating a change in said conditions, said first pluralityof said cells hereinafter referred to as announcer cells, a : second plurality of said cells being coupled to control ,, objects in response to predetermined ones of said packets, said second plurality of said cells hereinafter referred to as listener cells, at least one of said announcer cells and listener cells also performing the function of repeating at `~ least some of said packets, hereinafter referred to as repeater cells, a first group of cells being programmed with - 15 a first group identification number, said first group . including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in ~- said first group being programmed to perform a first group function, a second group of cells being programmed with a < 20 second group identification number, said second group including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in said second group being programmed to perform a second group function, said first group of cells communicating among 25 themselves with first packets, said first packets being " .
:`
1 initiated by at least one of said announcer cells in said first group and acted on at least one of said listener cells in said first group, said second group of cells communicating among themselves with second packets, said second packets being initiated by at least one of said announcer cells in said second group and acted upon by at least one of said listener cells in said second group, whereby communication occurs among said cells in said first and second group to carry out said first and second group functions.
Other aspects of the invented network and cell will be apparent from detailed description of the invention.
` 15 1 326~75 BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 is a block diagram illustrating typical application for the present invention.
Figure 2 is a diagram used to iilustrate the grouping of cells.
Figure 3 is another block diagram similar to Figure 2 used . to illustrate the grouping of cells.
Figure 4 is a diagram used to describe subchannels.
Figure 5 is a diagram illustrating a plurality of cells; this diagram is used to describe cell group formation employing the present invention.
Figure 6 is a chart illustrating the packet format used !~' . with the present invention.
Figure 7 is a chart illustrating the designation list portion of the packet format of Figure 6.
Figure 8 illustrates a series of steps used in forming a group of cell with the present invention.
Figure 9 is a chart illustrating the code assignments for the three-of-six encoding used with the present invention.
Figure 10 is a block diagram of the communication and control cell.
1 326~75 Figure 11 is a block diagram of a portion of the instruction decoding logic used within the processor of the cell of Figure 10 Figure 12 is a detailed block diagram of the process of 5 Figure 10.
Figure 13 is a timing diagram for the processor of Figure 10; this diagram also shows latches and registers used to provide the pipelining employed by the cell.
Figure 14 is a block diagram illustrating the presently 10 preferred embodiment of the three-of-six encoder.
Figure 15 is a block diagram showing the presently preferred embodiment of the three-of-six decoder.
Figure 16 is a block diagram showing the presently preferred embodiment of the three-of-six code verifier.
Figure 17 is an electrical schematic of the buffer section r' of one of the l/O sections.
Figure 18 is an electrical schematic of the counting and timing functions for an l/O subsection.
Figure 19 is an electrical schematic of the control and 20 state machine for an l/O section.
Figure 20 is an electrical schematic for the sample and hold means associated with the l/O subsections.
1 32627~
Figure 21 illustrates the network formed within an l/O
subsection to do digital-to-analog conversion.
Figure 22 illustrates the network formed within an l/O
section for analog-to-digital conversion.
5Figure 23 is an electrical schematic showing the communications portion of an l/O subsection.
Figure 24 is a state diagram used for the l/O subsections and for transmission contentions.
Figure 25 is a state diagram for the link level ARQ.
10Figure 26 is a state diagram for primary station connections.
Figure 27 is a state diagram for secondary station connections.
Figure 28 is a block diagram for a grouping device.
15Figure 29 is a diagram showing the form in which the system ID is encoded for transmission by the packet and encoded . within a cell.
Figure 30 is a diagram used to describe the operation of the inpuVoutput section and semaphore register.
DETAILED DESCRIPTION OF THE PRESENT INVENTION
An apparatus and method for providing a communications, sensing and control in a network is described. Where the network contains a plurality of intelligent cells, the cells in general are 5 programmable single chip remote control, sensing and communication devices that, when interconnected (via various : media) with other cells, have distributed sensing, communication, control and network configuration intelligence, configuration and control. The system comprises a network of cells organized in a i 10 hierarchy based on communications needs. Cells are organized into working "groups" independent of the network hierarchy.
Groups of cells generally are used to perform a group function.
This function is carried out by the assignment of tasks to cells within the groups. Cells communicate, control and sense 15 information. In general, each cell has a unique identification number and perform information processing tasks such as:
bidirectional communications protocol, input/output, packet processing and analog and digital sensing and control. In general, the system comprised of the cells has the characteristic of 20 storing network configuring information that is distributed ` throughout the system; and communicates automatically routed messages among cells. Each system also has a unique ç-''' identification (I D) which in the presently preferred embodiment is 48 bits. Moreover, it contains versatile programmable input/output l/O circuits with digitai versatile programming to configure cells to specific sensing, communication, control and 6 I/O, analog l/O, communication l/O and communications bit rate sensing .
In the following description, numerous specific details are set forth such as specific frequencies, etc., in order to provide a thorough understanding of the present invention. It will be 10 obvious, however, to one skilled in the art that these details are not required to practice the invention. In other instances, well-known circuits, methods and the like are not set forth in detail in order not to unnecessarily obscure the present invention.
1.
OVERVIEW OF AN APPLICATION OF THE PRESENT
INVENTION
Before describing the present invention in detail, an understanding of a typical application will aid in appreciation of 20 the details to follow. In Figure 1, a simple, typical application is shown based on the use of the present invention in a home. In 1 326~7'~
Figure 1, the switch 22 is used through the present invention to control the light 23.
The arrangement 20 comprises a cell 27 which is connected to the switch 22. The cell is also connected to a transceiver 29 5 which couples data onto the lines 24 and 25. Power for the transceiver and cell are provided from the power supply 30 which receives power from the lines 24 and 25. For this example, the lines 24 and 25 are ordinary household wiring (e.g., 110VAC) and the power supply 30, a five volt DC supply. The cell 27 is 10 preferably an integrated circuit which is described in more detail beginning with Figure lO. The transceiver 29 may be any one of many well-known devices for receiving and transmitting digital data and as presently contemplated does not perform any processing on transmitted data. The entire arrangement 20 may 15 be small enough to fit within an ordinary wallmounted electrical box which normally contains an electrical switch.
The arrangement 21 again may be small enough to fit within a typical electrical outlet box and includes a power supply 31 and transceiver 33 which may be identical in construction to the 20 power supply 30 and transceiver 29, respectively. This cell 28 is coupled to the transceiver 30 and power supply 29 as well as the solenoid operated power switch 32. Cell 28 may be identical to , ,\ ~
~ 32627':1 "
cell 27 except for programming and an identification number which shall be discussed later. An output from the cell 28 controls the solenoid 32 to operate a power switch which in turn connects the light 23 to the power lines 34 and 35. The cell 28, 5 as will be seen, can provide a digital or analog output, which can control a rheostat (not shown) or the like, thus enabling the dimming of the light 23.
The break 26 in the power lines 24 and 25 is used to indicate that the power lines 24 and 25 may not necessarily be on 10 the same circuit as power lines 34 or 35. As will be seen, the transceiver 29 may not necessarily communicate directly with transceiver 33, but rather communication between the transceivers may require linkage through another cell and transceiver which repeats packets sent between the 15 arrangements 20 and 21.
In Figure 1, the transceivers 29 and 33 communicate over power lines. The transceivers may communicate with one another . in numerous different ways over countless media and at any baud rate. They may, for example, each transmit and receive radio 20 frequency or microwave frequency signals through antennas. The transceivers could be connected to a communications lines, such as an ordinary twisted pair or fiberoptic cable and thus 1 32627~
communicate with one another independent of the power lines.
Other known communications medium may be employed between the transceivers such as infrared or ultrasonic transmissions.
Typical transmission rates are 10K bits per second (KBPS) for 5 power lines. Much higher transmission rates are possible folr radio frequency, infrared, twisted pairs, fiberoptic links and other media.
Cell 27 senses the opening or closing of the switch 22, then prepares a packet which includes a message initiating the state 10 of the switch 22; the packet is communicated to the cell 28 through transceiver 29, lines 24 and 25, lines 34 and 35, and transceiver 33, The cell 28 acknowledges the message by returning a packet to the cell 27 and also acts upon the message it received by turning on or off the light 23 by operating the 15 solenoid controlled power switch 32.
Each cell has a unique 48 bit identification number (ID
number), sometimes referred to as the cell address. In the currently preferred embodiment, each cell as part of the manufacturing process, receives this permanent and unique ID
20 number. (It cannot be changed following manufacturing.) As will be appreciated, with approximately 248 possible ID numbers, each cell will have a unique ID number no matter how large a network becomes for practical purposes, or no matter how many networks are interconnPcted. The grouping device then accesses the individual cell IDs and assigns a system ID to each cell. In addition, the grouping device configures the cells into groups to 5 perform group related functions.
For the illustration of Figure 1, cell 27 is designated as "A"
to indicate that its primary function is to "announce" that is, transmit the state of switch 22 on the network communications lines 24 and 25, and 34 and 35. On the other hand, cell 28 is ` 10 designated with the letter "L" since its primary function in Figure I is to "listen" to the network and in particular to listen to messages from cell 27. In subsequent figures, the "A" and "L"
designations are used, particularly in connection with a group formation of multiple cells to indicate an announcer arrangement, 15 such as arrangement 20 and a listener arrangement, such as arrangement 21. For purposes of discussion the cells themselves ,~
are sometimes referred to as transmitting or receiving data without reference to transceivers. (In some cases, ~he transceivers may be a simple passive network or simple wires, 20 which couple the inpuVoutput of a cell onto a line. As will be seen the l/O section of the cells can provide output signals that 1 32627~
can drive a twisted pair or the like. Thus the cells themselves can function as a transceiver for some media.) The cells 27 and 28 as will be described subsequently are processors having multiprocessor attributes. They may be 5 programmed prior to or after installing to perform their required function, such as an announcer or listener and for grouping combinations.
1 32h27~
NETWORK ORGANIZATION AND DEFINITIONS
A. Definitions Cell: A cell is an intelligent, programmable element or elements providing remote control, sensing and/or communications7 that when interconnected with other like elements form a communications, control and sensing netwsrk or system with distributed intelligence.
Announcer: An announcer is a source of group messages.
Listener: A listener is a sink of group messages.
(An announcer in some cases may request state information from a listener.) Repeater: A repeater is a cell which in addition to other 1~ functions reads packets from a medium and rebroadcasts them.
Group: A set of cells which work together for a common function (for example, a switch controlling a set of lights) is referred to as a "group".
In Figure 2, the group 37 has an announcer 37a, listeners 37b, and 37c, and a listener 40. A group 38 includes an announcer 38a, listeners 38b and 38c and the listener 40. Figure 2 illustrates that a single cell (cell 40) may be a listener in two groups. If announcer 37a has a light switch function, it can control lights through cells 37b, 37c and 40. Similarly, a switch associated with announcer 38a can control lights through cells 37c, 37b, and 40.
In Figure 3, a group 42 includes announcers 44, 45 and Iisteners 46 and 47. The group 43 shares cell 44 with group 42;
however, cell 44 is a listener for group 43. The group 41 shares cell 47 with group 42; cell 47 is an announcer for group 41 and for example, can announce to the listener 48 of group 41. Cell 47 also operates as a listener for group 42. A single cell as shown may be an announcer for one group and a listener for another group . , .
-~ (cells are programmed to perform these functions, as will bediscussed). However, as presently contemplated, a single cell cannot announce for more than one group.
(In the currently preferred embodiment each cell has three .-- inpuVoutput pairs of lines and a select line. Each pair shares a common set of resources. The lines may be used independently for some functions where the required shared resources do not conflict. In other functions, the lines are used as pairs. In this example, a pair of leads from cell 27 are coupled to a light switch and another pair are used for communications from the announcer, cell 27.) ,~ .
~ 32627'i Subchannel: In Figure 4, a first plurality of cells are shown communicating through a common medium such as a twisted pair 50 (cells are shown as "C", announcers as "A" and listeners as "L").
This (e.g., twisted pair 50) is defined as a subchannel, that is, a 5 set of cells all of which communicate directly with one another over the same medium. A broadcast by any member of the subchannel, such as the cell 49, will be heard by all members of that subchannel over the twisted pair 50.
Channel: A channel comprises two or more subchannels 10 where all the cells communicate using the same medium. In Figure 4, another plurality of cells are shown coupled to twisted pair 52 forming another subchannel. Assume cells 56 and 57 communicate between one another through a twisted pair 72.
They form yet another subchannel. The cells associated with the 15 twisted pairs 50, 52 and 72 comprise a single channel. It is possible that the twisted pairs 50, 52 and 72 are one continuous twisted pair with one subchannel 50 so far apart from the second subchannel 52 that the only communications between subchannels is over the portion of the twisted pair 72 running between cells 56 and 57. In this case the cells 56 and 57 are assigned to be "repeaters" in addition to whatever other function they may serve (e.g., announcer or listener).
A ~roup 55 is illustrated in Figure 4 which comprises an announcer and listener in the two different subchannels. Another group 75 is illustrated comprising an announcer on one subchannel 51 and subchannel 52, where the subchannels are not part of the 5 same channels since they use different media.
Gatewa~L: A gateway reads packets from two different media and rebroadcasts them. A cell may be a gateway.
Communications between channels is through gateway 54.
In Figure 4, an additional subchannel which includes the cell 10 58 is coupled to another medium 51, for example, a common power line. The cell 58 is shown connected to channel gateway 54 which in turn communicates with the twisted pair 52. The gateway 54 does not necessarily perform either an announcer or listener function, but rather for the illustrated embodiment, performs 15 only a channel gateway function by providing communication ` between two different media.
Subnetwork: A subnetwork comprises all the cells having the same system identification (system ID). For example, all the cells in a single family home may have the same system ID.
20 Therefore, the channels of Figure 4 may be part of the same subnetwork in that they share the same system ID.
:
Full Network: A full network may comprise a plurality of subnetworks each of which has a different system ID; a communications processor is used for exchanging packets between subnetworks. The communications prooessor translates 5 packets changing their system ID, addressing and other information. Two factory buildings may each have their own system ID, but control between the two is used by changing ` system IDs. (The word "network" is used in this application in its more general sense and therefore refers to other than a "full 10 network" as defined in this paragraph.) Other terms used later are:
Probe Packet: A packet routed by flooding which accumulates routing information as it travels through the ^~ network.
- 15 Groupin~ Device: A device that controls determination of routes among cells, assigns cells to groups, and assigns function to group members.
Contention: The state which exists when two or more cells . attempt to transmit a broadcast on the same subchannel at the 20 same time and their signals interfere.
.
- . . :
, , .
.
~, :
' ' , 1 32627~
B. GROUP FORMATION
1. Cells Assianed to a aroup bv a postinstallation ~roupin~
device.
Assum~ that the plurality of cells shown in Figure 5 are all connected to communicate over the power lines in a home and are part of the same channel. Further assume that one cell, announcer 60, is to be grouped with the listener 65. The lines between the cells such as line 59 is used to indicate which of the cells can communicate directly wi~h one another, for instance, announcer 10 60 and cell 61 can communicate with one another. (Cells 61, 62, 63, 64 and 66 of course may be announcers or listeners in other groups, but for purposes of explanation are shown as "C" in Figure 5.) Since announcer 60 and cells 61, 62, and 63 all communicate with one another, they are on the same subchannel. Similarly, 15 cells 62, 64, 65 and 66 are another subchannel. (There are other subchannels in Figure 5). Importantly, however, announcer 60 and listener 65 are in different subchannels of the channel of Figure 5 and there are numerous routes by which a message can be passed from announcer 60 to listener 65, for example, through cells 61 20 and 64 or through cells 62 and 64, etc.
Note that even though all the cells are on the same power system of a house, they may not communicate directly with one .
1 32627~
another. For instance, the announcer 60 may be on one circuit which is only coupled to the listener 65 through long lengths of wire running the length of a home and a low impedance bus bar of a circuit breaker panel. The high frequency communication 5 messages may be sufficiently attenuated through this path to prevent direct communications between cells even though they are physically close to one another.
For the following description, it is assumed that each of the cells can broadcast without interfering with the broadcast of 10 other cells. That is, messages do not interfere with one another.
The case where some contention occurs is dealt with under the protocol section of this application.
In one embodiment, the group of announcer 60 and listener ~- 65 is formed by using the grouping device shown in Figure 28.
15 Note that before this group is formed the announcer 60 and Iistener 65 are ordinary cells, not designated to be an announcer and listener. Each grouping device may be assigned a unique 48 bit system ID at time of manufacture (in the presently preferred embodiment a 48 bit number is used). In the presently preferred 20 embodiment, a cell is included with each grouping device. The cell's ID becomes the system ID. This assures that each system has a unique system ID. By way of example, each home has its .
1 32627~
own "grouping" device and hence, its own system ID for the subnetworks used in the home. This system iD is used in cell packets for the subnetwork. In this example, the grouping device has available the cell IDs of cells 60 and 65. (Various methods of 5 obtaining cell IDs will be described later.) The grouping device is connected to cell 60 by communicating through one of its three pairs of inpuVoutput (I/O) lines of the cell (or the select pin) and the grouping device reads the 48 bit ID number of the cell 60. (Different methods of 10 determining the cell's IDs are described in the next section.) The grouping device next generates a random bit binary number which in the presently preferred embodiment is 10 bits. This number functions as a group identification number (also referred to as the group address) for the group comprising the announcer 60 and 15 listener 65. The grouping device checks this number against other group IDs which it has previously assigned to determine if the group ID has previously been used. If it has been already used ` it generates another number. (A single grouping device, for . instance keeps track of all the group IDs assigned in a single 20 home.) The grouping device programs the cell 60 designating it as an announcer.
.
The grouping device may cause the announcer 60 to broadcast the group number in a special packet which asks all cells in the network to acknowledge the message if they have been designated as a member of this group. This is another way 5 to verify that the group ID has not been used.
The grouping device now determines the ID number of the cell 65. This may be done by connecting the grouping device directly to the cell 65 even before the cell is installed or by other methods discussed in the next section. (A cell and a group 10 can be assigned ASC;II names, for example, "porchlight" (cell name) and Nexterior lights" (group name). This is used to allow selection of cell IDs or group IDs by accessing the ASCII name.
Now the grouping device causes the announcer 60 to transmit a probe packet. The probe packet contains the ID of cell 15 65. The packet directs all cells receiving the packet to repeat it and directs cell 65 to acknowledge the packet. Each cell receiving the probe packet repeats it and adds to the repeated packet its own ID number. Each cell only repeats the packet once (the mechanism for preventing a probe packet from being repeated 20 more than once is described later.) The cell 65 receives the probe packet through numerous routes, including those which in the diagram appear to be most , ' ~':
.
~ 1 32627~
~:
direct (via cell 62) and those which are longer, for example, via cells 61 and 64. It is assumed that the first probe packet to arrive at cell 65 took the most direct route and is therefore the preferred routing. (Assume that this is via cell 62.) Cell 65 5 receives a packet which indicates that the probe packet was transmitted by cell 60, repeated by cell 62 and intended for cell 65. The other probe packets received by cell 65 after this first packet are discarded by cell 65.
Cell 65 now transmits an acknowledgement back to 10 announcer 60. This packet includes the routing of the probe packet (e.g., repeated by cell 62). The packet directs cell 62 to repeat the packet to confirm its receipt.
After announcer 60 receives the acknowledgement packet -. for cell 65 it determines that cell 62 must be a repeater. The 15 grouping devices causes announcer 60 to send a repeater assignment packet which includes the unique ID number of cell 62, the group number and a message which informs cell 62 that it is assigned a repeater function for the group. This causes cell 62 to repeat all those packets for th~ group comprising announcer 20 cell 60 and 65. Another message is sent from announcer 60 under control of the grouping device repeated by cell 62, designating cell 65 as a listener, causing it to act upon messages for the ;' ,, 1 326275 `
group (cell 65 becomes a group member.) The grouping device assigns members a member number whch is stored by member cells.
The group formation described above is shown in Figure 8 by steps or blocks 68 through 72. Block 68 illustrates the - broadcasting of the probe packet (e.g., cell 60 transmits the initial probe packet to all cells). The packet includes the address of a destination cell. As the packet proceeds through the network, the packet and accumulates the ID numbers of those - 10 cells repeating the packet (block 69). Block 70 shows the acknowledgement (reply) to the probe packet from the destination cell (e.g., cell 65). This packet returns the ID
numbers of the repeaters contained in the first received probe ~ , , packet. Repeater assignment packets are sent out by the 15 announcer causing each repeater to rebroadcast packets for the group; this is shown by block 71. Finally, as shown by block 72, the destination cell such as cell 65 is designated as a listener.
2. Cells assigned to a group ~L a prein~tallation grouping device.
There may be several types of preinstallat;on grouping 20 devices, for example, see Figure 28 for a device which may be used. One type is a device that a manufacturer uses to preassign cells to groups. Another type of preinstallation grouping device 1 32627~
~ is one that a retailer or other cell vendor may use to assign cells - to groups before installation.
A grouping device assigns a cell to a group and assigns the cell's function(s) for that group. The grouping device may also assign a system ID to the cell. The system ID assigned by a preinstallation grouping device is not necessarily a unique system ID. (Postinstallation grouping devices assign a unique system ID to each system.) One method that may be used by preinstallation grouping . 10 devices to generate a system ID is to choose a systern ID from a range of the 48 bit address and system ID numbers that have been set aside for use as preinstallation system IDs. Just as the cell IDs in the range 1-1023 have been set asida for use as group IDs ~ and group addresses, the cell IDs in the range 1024-2047 can be - 15 set aside for use as preinstallation system IDs.
It is desirable that grouping devices and other network control devices be able to identify preinstallation system IDs as opposed to postinstallation system IDs. Since postinstallation sytem IDs are generated by copying a cell ID, cell IDs should not 20 be assigned in the range set aside for preinstallation system IDs.
Therefore, ID numbers in that range would not be assigned to cells as cell IDs.
1 326~75 Cells may be sold in sets that have been preassigned to a group by the manufacturer. The type of preinstallation grouping device used by the rnanufacturer assigns cells to groups by writing the appropriate codes into the cells' nonvolatile memory.
5 The user may install such a set of cells and it will operate ~- without assignment by a postinstallation grouping device provided that the set of cells may communicate via a single subchannel .
A user may assign cells to a group at the time cells are 10 purchased or at any other tirne before installation. Such cells, unlike the case previously discussed, are not assigned to groups by the manufacturer and are called unassigned cells. Unassigned - cells all have the same system ID, a system ID number that has been set asido for use only by unassigned cells.
15The user assigns a set of cells to a group by using a preinstallation grouping device that may be different from the preinstallation grouping device used by a manufacturer.
Typically, such a grouping device will operate on one cell at a time. The operator commands the grouping device to generate a 20 new group ID and system ID and then each cell is connected to the - device in turn. The operator commands the grouping device to assign a cell to the group while the cell is connected to the .
grouping device. The grouping device assigns cells the same group ID and system ID until it is commanded by the operator to generate a new group ID and system ID.
The user may install such a set of cells and it will operate 5 without use of a postinstallation grouping device provided that the set of cells can communicate via a single subchannel.
3. Unassi~ned Cells Grouping and Self-Assignment After Installation.
Unassigned cells may create a group and assign themselves 10 to the group after installation in the following manner.
The first announcer cell that is stimulated via its sensor input (e.g., light switch) controls the group formation process. It chooses a system ID number at random from the range of system ID numbers that have been set aside for preinstallation grouping 15 devices. It chooses a group ID number at random. It then broadcasts the group ID number in a packet that requests a reply from any cells that are members of that group. If the transmitting cell receives any such replies, it chooses another group ID at random. The cell continues this process of selecting a 20 random group ID and testing to see if it is already in use until it finds a gro-up ID that is unused in the system in which it is operating.
An unassigned cell's default configuration information programmed at the factory identifies its function as either a listener or an announcer. If the unassigned cell is an announcer, - it waits for its sensing input to be stimulated, and when it is stimulated, the cell transmits a packet addressed to a group.
If an unassigned cell is a listener, it listens after power-up for a packet. The cell takes the group ID from the first packet it receives and assigns itself to that group. The cell then sends a reply to the announcer cell. This reply is not an acknowledgement only packet; it is a packet that identifies the cell as a listener in the group and the packet must be acknowledged by the announcer.
This assures that all of the listener identification packets will arrive at the announcer even though there will be contention and collisions in the process.
The cell that transmitted the group announcement builds a . Iist of group members as each reply comes in. It then sends a packet to each listener assigning that listener a group member number.
4. Unassigned Cells Joining Preexisting Group After Installation.
Unassigned cells may be added to existing systems and assigned to a group in a manner similar to the above method v~.
discussed in Section 3 above. A listener joins the system and a group by the same method as in Section 3 above.
In the above example, the announcer waits to be stimulated via its sensor input. An unassigned announcer waits for its first sensor input stimulation or its first received packet. Of those two events, the event that occurs first determines the subsequent actions of the announcer cell.
; If the cell is stimulated first, it controls a group formation process just as in the above example. If the announcer cell 10 receives a group packet first, it joins that group as an announcer.
It then sends a packet to the group announcer requesting configuration information about the group (group size, number of announcers,etc.) and the assignment of a group member number.
:
C. METHODS OF IDENTIFYING A CELL FOR GROUPING
In order for a grouping device to go through the steps necessary to form a group or add a cell to a group, it must know the IDs of the cells to be added to the group. The grouping device then uses those cell IDs to address commands to the cells during the grouping process. The methods that a user with a grouping device may use to obtain the cell IDs are listed below. Note that a grouping device or other control device's ability to communicate with a cell in the following example may be limited by security procedures if used. The security procedures, limitations on communications and levels of security are not critical to the present invention. The following example assumes that no security procedures are in place. In particular, it may be impossible for a grouping device to communicate with installed 1~ cells unless the grouping device has the system key (system ID
and encryption keys.) 1. Direct connection to the cell.
The grouping device may be connected to an l/O line of the cell package and then send a message to the cell requesting its ID.
. 20 Physical connection can be used to find a cell's ID either before or after the cell is installed. Known means can be used (e.g., a fuse . . , or a programmed disable command) to allow a user to disable this function in an installed cell to protect the security of the system.
2. Selection of the Cell Through Use of Special Pin The user may use the grouping device or some other 5 selection device to physically select the cell by stimulating a cell input pin that has been designated to serve the selection function. The grouping device communicates with the cell through the normal communications channels and sends a broadcast message requesting that all selected cells reply with 10 their ID. Only one cell is selected so only that cell wiil reply to ,~ the request. Physical selection can be used to find a cell's ID
-~ either before or after the cell is installed. Again, a means can beprovided to allow a user to disable this feature to protect the security of the system.
15 3. Query All Names of Previously Grouped Cells . It is assumed in this example that ASCII "groups" and "cell"
names have been previously assigned to the cells. For this ~ method, the grouping device queries all of the cells in a system to ; report their group and cell names (ASCII name). The user scrolls 20 through the list of group names by using the grouping device. The -~ user selects the name of the group that is believed to contain the ` target cell. The grouping device displays the names of all of the . .
cells that are in the group and their assigned tasks (announcer, listener, repeater). The user selects the name of the cell that is believed to be the target cell.
` If the selected cell is an announcer, the grouping device 5 prompts the user to activate the announcer by stimulating its input. For example; if the cell is attached to a light switch, the user turns the switch on and off. The cell sends announcement packets to the group. The grouping device listens to the communications channel and discovers the group and member 10 numbers or other codes of the activated announcer.
If the selected cell is a listener cell, the grouping device sends packets to the cell (using the group and member numbers for addressing) commanding it to toggle its output. For example, if the cell controls a light, the light will flash on and off. This 15 allows the user to verify that he has selected the correct cell.
~; The grouping device sends a packet (using group and member numbers for addressing) to the target cell with a command for . the target cell to return its cell ID. The grouping device now .' knows the target ID and can proceed with the group assignment 20 process.
Querying names is used to find a cell's ID before or after the cell is installed.
' ' ;; ~ 326~75 4. Stimulate Group.
This method is used in a network in which group and cell ASCII names have been assigned. The user commands the grouping device to wait for the next group announcement. Then the user stimulates the announcer in the group of interest. For example, if the announcer is a light switch, the user throws the switch. The ~`, grouping device hears the announcement packet and extracts the .- group ID from it.
.~
The user may verify that this group ID is for the desired group by causing the grouping device to send packets to all of the group listeners commanding them to toggle their outputs. The user verifies that it is the desired group by observing the actions of the listener cells (for example, if the group consists of lighting controls, the light flashes).
Now using that group ID, the grouping device broadcasts a packet to the group requesting that each cell reply with its cell name until the cell of interest is found. The user selects that name and the grouping device, knowing that cell's ID, can proceed with the group assignment process.
If a user elects, the ID of the cell may be verified before proceeding with the grouping procedure. The following procedure is used to verify that the ID is for the target cell.
; 35 If the selected cell is an announcer, the grouping device prompts the user to activate the announcer by stimulating its input. For example: if the cell is attached to a light switch, the user turns the switch on and off. The grouping device is then able 5 to discover the group address and member number of the cell.
If the selected cell is a listener, the grouping device sends packets to the cell (using the group and member numbers, for addressing) commanding it to toggle its output. For example, if the cell controls a light, the light will flash on and off. This i~ 10 allows the user to verify that he has selected the correct cell.
5. Stimulate Announcer.
This method is used in a network in which no group or cell ASCII names have been assigned but announcers and listeners have been assigned. The grouping device sends a packet to all 15 cells in the network commanding each announcer to broadcast a packet containing its ID the next time it is stimulated. The grouping device then prompts the user to stimulate the announcer by activating its sensed device; for instance, turn on a light switch for a light switch announcer. Since the user will - 20 stimulate only one announcer, the groupins device will receive ~ only one packet with a cell ID.
.
,.,:
-., 1 32627~
There is a chance that another announcer cell will be stimulated at the same time. Perhaps someone else throws a light switch or a temperature sensor detects a temperature change. The user may want to verify that the ID received is for 5 the correct cell. To verify that the cell ID is the correct one, the user goes through the announcer stimulation process a second time and verifies that the same results occur.
6. Toggle Listener . This method is used in a network in which no group or cell 10 names have been assigned. The grouping device broadcasts a packet that queries cells that are listeners to reply with their ID.
The grouping device needs to limit the number of cells replying so - the packet contains an ID bit mask to limit replies to a subset of the possible cell IDs. When the grouping device has developed a list of listener IDs, it allows the user to toggle each listener, causing the listener cell to turn its output on and off. The user continues through the list of listener cells until he observes the target cell toggling its output. The user has then identified the cell to the grouping device and it can proceed with the grouping 20 operation.
D. PACKET FORMAT
Each packet transmitted by a cell contains numerous fields.
For example, a format used for group announcements is shown in Figure 6. Other packet formats are set forth in Appendix A.
Each packet begins with a preamble used for synchronizing the receiving cells' input circuitry (bit synch). The particular .~ preamble code used in the currently preferred embodiment is described as part of the three-of-six combinatorial codes (Figure . 9). A flag field of 6 bits begins and ends each of the packets. The 10 flag field code is also described in Figure 9.
. As currently preferred, each of the cells reads-in the entire.~ packet, does a cyclic redundancy code (CRC) calculation on the i packet except for the contention timer field and compares that result with the CRC field of the received packet. The ALU 102 of '- 15 Figure 12 has hardware for calculating the packet CRC and CRC
` registers 130 for storing intermediate results. If the packet CRC cannot be verified for an incoming packet, the packet is . discarded. The packet CRC ~ield is 16 bits as calculated, then converted into 24 bit fields for transmission in a 3-of-6 code ^ 20 using the encoding of Figure 9. (For the remainder of discussion .
of packet fields in this section, the field length is described prior ~
to encoding with the 3-of-6 combinatorial codes of Figure 9.) In , -i/, ~
the currently preferred embodiment the CRC is a CCITT standard algorithm (X16+X 12 + X 5 + 1).
The system ID is a 32 bit field as currently preferred. The 5 other 16 bits of the 48 bit system ID are included in the CRC
~ s calculation but not transmitted as part f the packet (Figure 29).
; The link address field is a 48 bit field. When this field is all zeroes the packet is interpreted as a system wide broadcast which is acted upon by all the cells. For instance, a probe packet 10 has an all zero field for the link address. Group addresses are contained within the link address. For group addresses the first ~ 38 bits are zero and the remaining lO bits contain the group - address. (The cell ID numbers assigned at the factory mentioned earlier range from 1024 to 248 since 210 addresses are reserved . 15 for groups.) The link address, in some cases, is an individual's cell's address. (For example, when a cell is being assigned the task of repeater or listener.) The contention timer is a lO bit field with an additional 6 bits for a CRC field (or other check sum) used to verify the 10 20 bits of the timer field. Each cell which repeats a packet operates upon this field if the cell must wait to transmit the packet. If packets are being transmitted by other cells a cell must wait to '':
,~ .
:
transmit its packet, the time it waits is indicated by counting down the contention timer field. The rate at which this field is counted down can be programmed in a cell and this rate is a function of the type of network. The field starts with a constant 5 which may be selected by the type of network. Each cell repeating the packet counts down from the number in the field at the time the packet is received. Therefore, if a packet is repeated four times and if each of the four cells involved wait for transmitting, the number in the contention field reflects the sum 10 f the times waited subtracted from a constant (e.g., all ones).
When the contention timer field reaches all zeroes, the cell waiting to transmit the packet discards the packet rather than transmit it. This prevents older packets from arriving and being interpreted as being a new packet.
~, As mentioned, the contention timer has its own 6 bit CRC
field. If the contention timer field were included in the packet CRC, the packet CRC could not be computed until a packet could ~- actually be transmitted. This would require many calculations in the last few microseconds before a transmission. To avoid this 20 problem a separate CRC field is used for the contention timer field. If the contention timer field cannot be verified by its 6 bit CRC, the packet is discarded.
~ ; .
,, ,~ . . . .
The hop count field records the number of hops or retransmissions that a packet takes before arriving at its destination. This 4 bit field starts with a number which is the maximum number of retransmissions allowed for a particular 5 packet and is decremented by each cell repeating a packet. For example, in a packet originated by a group announcer the starting "hop" count is the maximum number of retransmissions that the packet must undergo to reach all of the cells in a group. When this field becomes all zeroes, the packet is discarded by the cell, - 10 rather than being retransmitted Therefore, 16 hops or retransmissions is the limit as currently implemented.
The link control field provides the link protocol and consists of 8 bits. This field is discussed in a subsequent section covering other layers of the protocol.
The random/pseudo random number field contains an 8 bit random number which is generated for each packet by the cell originally transmitting the packet. This number is not regenerated when a packet is repeated. This number is used as will be explained in conjunction with Figure 8 to limit 20 rebroadcasting of probe packets; it also may be used in conjunction with encryption where the entire packet is to be encrypted .
'~' ~ 326275 The network control field (4 bits) indicates routing type or packet type, for instance, network control, group message, probe message, etc.
The source address field (variable size) contains, by way of 5 example, the 48 bit ID number of the cell originating a packet.
For a probe packet this field contains the ID number of the announcer. For an acknowledgement the field contains the ID of the listener. For a packet addressed to a group, this field contains the source cell's group member number.
The destination list is described in conjunction with Figure 7.
: The message field is variable in length and contains the - particular message being transmitted by the packet. Typical -~ messages are contained in Appendix B. In the case of a probe - 15 packet the field includes the routing; that is, each cell repeatingincludes its ID number to this field. The messages, once a group is formed, will, for instance, is used by announcer 60 to tell ; listener 65 to turn-on a light, etc.
The encryption field, when used, contains 16 bits used to 20 verify the authenticity of an encrypted packet typically this portion of a packet is not changed when a packet is repeated.
Well-known encryption techniques may be used.
~'!
1 32627~
The bracket 99 of Figure 6 represents the portion of a packet which remains unaltered when a packet is repeated. These fields are used to limit repeating as will be described in conjunction with Figure 8.
The destination list field of the packet of Figure 6 is shown in Figure 7. The destination list begins with a 4 bit field which indicates the number of members in a group designated to receive a message in the packet. Therefore the packet can be directed to up to 16 members of a group. The number of each of the members within the group is then transmitted in subsequent 8 bit fields.
The group number contained in the link address and member ~.
number contained in the destination list forms an address used to . convey messages once the group is formed. If the destination number is zero, the packet is addressed to all members of the 15 group. For some packet types this field contains the ID of the . receiving cell (see Appendix A).
E. MECHANISM FOR PREVENTING REBROADCASTING OF
~^ CERTAIN PACKETS
~;~
-. As previously mentioned, the probe packets are repeated only once by each of the cells after the packet is initially '.`
~
broadcast. A special mechanism programmed into each of the cells allows the cells to recognize packets which it has recently repeated.
First, it should be recalled that as each cell transmits, or 5 retransmits a packet, it calculates a packet CRC field which : precedes the end flag. For packets that are repeated, a new CRC
i is needed since at least the hop count will change, requiring a ~- new packet CRC field for the packet. This CRC field is different from the CRC field discussed in the next paragraph.
As each packet requiring repeating is received, a repeater CRC number is calculated for the fields extending from the beginning of the link control to the end of the destination list as indicated by bracket 99 of Figure 6. As a cell rebroadcasts a packet it stores the 16 bit repeater CRC results in a circular list 15 of such numbers if the same number is not already stored.
However, the packet is repeated only if the circular list does not contain the repeater CRC results calculated for the field 99.
.~; Therefore, as each packet is received which requires .~ repeating, the CRC is computed for the field 99. This is shown by20 block 73a of Figure 8. This number is compared with a list of 8 .:- numbers stored within the RAM contained within the cell - indicated by block 73b. If the number is not found within the ~.. -, . . .
1 32627~
stored numbers, the new repeater CRC results are stored as indicated by block 73c and the packet is repeated. On the other hand7 if the number is found then the packet is not repeated. As presently implemented, 8 numbers are stored in a circular list, 5 that is, the oldest numbers are discarded as new ones are computed.
The use of the repeater CRC calculation associated with the field 99 and the use of the circular list will prevent repeating of a previously rebroadcasted packet. Note that even if an announcer 10 continually rebroadcasts the same sequence of messages, for example, as would occur with the continuous turning on and turning off of a light, a cell designated as a repeater will rebroadcast the same message since the packet containing messages appears to be different. This is true because the . 15 random number sent with each of the identical messages will presumably be different. However, in the instance where a cell receives the same message included within the same field 99 (same random number), the packet with its message will not be rebroadcast. This is particularly true for probe packets. Thus, for 20 the establishment of groups discussed above, the broadcast probe packets quickly "die out" in the network, otherwise they may echo 1 32627~
for some period of time, causing unnecessary traffic in the n etwo rk .
F. THREE-OF-SIX-COMBINATORIAL CODING
In many networks using the synchronous transmission of digital data, encoding is employed to embed timing information within the data stream. One widely used encoding method is Manchester coding. Manchester or other coding may be used to . encode the packets described above, however, the coding described below is presently preferred.
A three-of-six combinatorial coding is used to encode data for transmission in the presently preferred embodiment. All data is grouped into 4 bit nibbles and for each such nibble, six bits are transmitted. These six bits always have three ones and three zeroes. The transmission of three ones and three zeroes in some :~j 15 combination in every six bits allows the input circuitry of the cells to quickly become synchronized (bit synch) and to become byte synchronized as will be discussed in connection with the l/O
section. Also once synchronized (out of hunt mode) the transitions in the incoming bit stream are used to maintain synch.
- 20 The righthand column of Figure 9 lists the 20 possible combinations of 6 bit patterns where 3 of the bits are ones and 3 are zeroes. In the lefthand column, the corresponding 4 bit 1 32627~
pattern assigned to the three-of-six pattern is shown. For example, if the cell is to transmit the nibble 0111, it is converted to the bit segment 010011 before being transmitted.
Similarly, 0000 is converted to 011010 before being transmitted.
5 When a cell receives the 6 bit patterns, it converts them back to ; the corresponding 4 bit patterns.
- There are 20 three-of-six patterns and only 16 possible 4 bit combinations. Therefore, four three-of-six patterns do not have corresponding 4 bit pattern assignments. The three-of-six 10 pattern 010101 is used as a preamble for all packets. The flags .~ for all packets are 101010. The preamble and flag patterns are - particularly good for use by the input circuitry to establish data ~ synchronization since they have repeated transitions at the basic `- data rate. The two three-of-six patterns not assigned can be used . 15 for special conditions and instructions.
Accordingly, a cell prepares a packet generally in integral number of bytes and each nibble is assigned a 6 bit pattern before transmission. The preamble and flags are then added. The circuitry for converting from the 4 bit pattern to the 6 bit 20 patterns and conversely, for converting from the 6 bit patterns to the 4 bit patterns is shown in Figures 14 and 15.
.i:
~ 326275 I I I .
COMMUNICATION AND CONTROL CELL
- A. Overview of the Cell ~ 5 Referring to Figure 10, each cel! includes a multiprocessor 100, inpuVoutput section 107-110, memory 115 and associated timing circuits shown specifically as oscillator 112, and timing generator 111. Also shown is a voltage pump 116 used with the 10 memory 115. This cell is realized with ordinary integrated circuits. By way of example, the multiprocessor 100 may be fabricated using gate array technology, such as described in U.S.
Patent 4,642,487. The preferred embodiment of the cell ~, - comprises the use of CMOS technology where the entire cell of 15 Figure 10 is fabricated on a single silicon substrate as an integrated circuit. (The multiprocessor 100 is sometimes referred to in the singular, even though, as will be described, it is a multiprocessor, specifically four processors.) The multiprocessor 100 is a stack oriented processor having 20 four sets of registers 101, providing inputs to an arithmetic logic ., unit (ALU) 102. The ALU 102 comprises two separate ALU's in the presently preferred embodiment.
~.
-- .
The memory 115 provides storage for a total of 64KB in the currently preferred embodiment, although this particular size is not critical. One portion of the memory is used for storing instructions (ROM code 115a). The next portion of the memory is 5 a random-access memory 115b which comprises a plurality of ordinary static memory cells (dynamic cells can be used). The third portion of the memory comprises an electrically erasable and electrically programmable read-only memory (EEPROM) 115c.
.~. In the currently preferred embodiment, the EEPROM 115c employs 10 mèmory devices having floating gates. These devices require a higher voltage (higher than the normal operating voltage) for programming and erasing. This higher potential is provided from an "on-chip" voltage pump 116. The entire address space for : memory 115 addressed through the ALU 102a which is one part of ., 15 the ALU 102.
The ROM 115a stores the routines used to implement the various layers of the protocol discussed in this application. This ROM also stores routines needed for programming the EPROM
115c. The application program for the cell is stored in ROM 115a 20 and, in general, is a routine which acts as a "state machine"
driven by variables in the EEPROM 115c and RAM 115b. RAM 115b stores communications variables and messages, applications ' -~ 326~75 variables and "state machine" descriptors. The cell ID, system ID
and communications and application parameters (e.g., group number, member number, announcer/repeater/listener assignments) are stored in the EEPROM 115c. The portion of the 5 EEPROM 115c storing the cell ID is "write-protected" that is, once programmed with the cell ID, it cannot be reprogrammed ` The inpuVoutput section of the cell comprises four subsections 107, 108, 109 and 110. Three of these subsections 107, .~ 108 and 109 have leads 103, 104, and 105 respectively for 10 communicating with a network and/or controlling and sensing devices connected to the cell. The remaining subsection 110 has a single select pin 106 which can be used to read in commands such as used to determine the cell's ID. As presently implemented, the subsection 110 is primarily used for timing and 15 counting. The input/output section is addressed by the processor through a dedicated address space, and hence, in effect appears to the processor as memory space. Each l/O subsection can be coupled to each of the subprocessors. This feature, along with -the multiprocessor architecture of processor 100, provides for 20 the continuous (non-interrupted) operation of the processor. The I/O section may be fabricated from well-known circuitry; the .~
1 32 627 ~
presently preferred embodiment is shown in Figures 17 through 23.
The cell of Figure 10 also includes an oscillator 112 and timing generator 111, the latter provides the timing signals 5 particularly needed for the pipelining shown in Figure 13.
- Operation at a 16mHz rate for the phases 1-4 of Figure 13 is . currently preferred, thus providing a 4mHz minor instruction cycle rate. Other well-known lines associated with the cell of ` Figure 10 are not shown (e.g., power).
All of the cell elements associated with Figure 10 are, in the preferred embodiment, incorporated on a single semiconductor chip, as mentioned.
B. PROCESSOR
The currently preferred embodiment of the processor 100 is 15 shown in Figure 12 and includes a plurality of registers which - communicate with two ALU's 102a and 102b. (Other processor architectures may be used such as one having a "register" based system, as well as other ALU and memory arrangements.) The address ALU 102a provides addresses for the memory 115 and for 20 accessing the 1/0 subsections. The data ALU 102b provides data for the memory and l/O section. The memory output in general is ''.
.
coupled to the processor registers through registers 146 to DBUS
223.
. The 16-bit ABUS 220 provides one input to the address ALU
102a. The base pointer registers 118, effective address registers 119 and the instruction pointer registers 120 are coupled to this bus. (In the lower righthand corner of the symbols used to `~ designate these registers, there is shown an arrow with adesignation "x4". This is used to indicate that, for example, the base pointer register is 4 deep, more specifically, the base pointer register comprises 4 16-bit registers, on~ for each processor. This is also true for the effective address registers ~`. and the instruction pointer registers.) The BBUS 221 provides up to a 12 bit input to the ALU 102a or an 8 bit input to the data ALU
102b through register 142. The 4 deep top of stack registers 122, `~ 15 stack pointer registers 123, return pointer registers 124 and instruction registers 125 are coupled to the BBUS.
-- The CBUS 222 provides the other 8-bit input to the ALU 102 . through register 143. The CBUS is coupled to the instruction pointer registers 120, the 4 deep top of stack registers 122, the -. 20 four carry flags 129, and the 4 deep CRC registers 130 and the 4 deep next registers 131.
.
. ~ ' : 1 32627~
The MBUS, coupled to the output of the memory, can receive data from the output of the ALU 102b through register 145b, or from the memory or l/O sections (107-110). This bus through register 1 46 and the DBUS 223 provides inputs to registers 118, 119, 120, 122, 123, 124, 125, 130, 131 and to the carry flags 129.
~! There is a 16-bit path 132 from the output of the address ALU 102a to the registers 120. The ALU 102b includes circuitry for performing CRC calculations. This circuitry directly connects with the CRC registers 130 over the bidirectional lines 133. The top of stack registers 122 are connected to the next registers 131 ;: over lines 138. These lines allow the contents of register 122 to be moved into registers 131 or the contents of register 131 to be moved into registers 122. As currently implemented, a bidirectional, (simultaneous) swap of data between these ~'7 15 registers is not implemented. Four bits of data from the output of the memory may be returned directly either to the instruction pointer registers 120 or the instruction registers 125 through lines 139.
The pipelining (registers 141,142, 143, 145 and 146) of data and addresses between the registers, ALU, memory and their respective buses is described in conjunction with Figure 13.
. .
1 32627~
The data in any one of the stack pointer registers 123 or any one of the return pointer registers 124 may be directly incremented or decremented through circuit 127.
Both ALU's 102a and 102b can pass either of their inputs to 5 their output terminals, can increment and can add their inputs.
ALU 102b in addition to adding, provides subtracting, shifting, - sets carry flags 124 (when appropriate), ANDing, ORing, exclusive ORing and ones complement arithmetic. The ALU 102b in - a single step also can combine the contents of next registers 131 10 and CRC registers 130 (through paths 222 and 133) and combine it with the contents of one of the top of stack registers 122 to provide the next number used in the CRC calculations.
Additionally, ALU 102b performs standard shifting and provides a ` special nibble feature allowing the lower or higher four bits to be 15 shifted to a higher or lower four bits, respectively. Also, ALU
102b performs a 3-of-6 encoding or decoding described in Section F.
In the preferred embodiment with a single semiconductor chip for a cell there are basic contact pads on the die for power 20 and ground and all the l/O pins A and B and the "read only" pin 106 (subsections 107, 108, 109 and 110, Figure 12). These contact . . , . .
.
.~
, .
; ,, ,, -~ :
1 32627~
pads are used for attachment to package pins for a basic inexpensive package.
In addition to the basic contact pads additional pads in the presently preferred embodiment will be provided with 5 connections to the ADBUS 224 and the MBUS 225 of Figure 12.
One control contact pad may be provided to disable internal memory. By activating the control contact the internal memory is - - disabled and the data over ADBUS and MBUS is used by the processors. This allows the use of a memory that is external to 10 the cell. It is assumed that the additional contact pads may not be available for use when the cell is in an inexpensive package.
These additional contacts may be accessed by wafer probe contacts or from pins in packages that have more than the minimum number of pins.
The cell as manufactured requires an initialization program.
At wafer probe time the external memory is used for several ;`- purpose, one or which is to test the cell. Another use is to `~ provide a program to write the cell ID into the EEPROM during the manufacturing process. Any necessary EEPROM instructions to 20 allow power up boot when the cell is later put in use may be added at this time. Initialization programs and test programs are well-known in the art.
1 32627~
C. PROCESSOR OPERATIC)N
In general, memory fetches occur when the ALU 102a provides a memory address. The memory address is typically a base address or the like on the ABUS from one of the base points 5 in registers 118, effective address registers 119 or instruction pointer register 120 combined with an offset on the BBUS from the stack pointer register 123, return pointer register 124, top of stack registers 122 or the instruction registers 125.
` Calculations in the ALU 102b most typically involve one of 10 the top of stack registers 122 (BBUS) and the next registers 131 (CBUS) or data which may be part of an instruction from one of the instruction registers 125.
While in the presently preferred embodiment, the processor operates with the output of the memory being coupled to the DBUS
15 223 through register 146, the processor could also be implemented with data being coupled directly to the input of ALU
102b. Also, the function performed by some of the other ~ registers, such as the effective address registers 119 can be performed by other registers, although the use of the effective 20 address registers, and for example, the CRC registers, improve the operation of the processor.
:
, ~,, - : .
' t 326275 In general, for memory addressing, a base pointer is provided by one of the registers 118, 119 or 120 with an offset :~ from one of registers 122, 123, 124 or 125. The address ALU
` 120a provides these addresses. Also, in general, the ALU 120b 5 operates on the contents of the top of stack and next register;
there are exceptions, for example, the instruction register may provide an immediate input to the ALU 102b. Specific addressing and other instructions are described below.
D. MULTIPROCESSOR OPERATION
The processor is effectively a multiprocessor (four processors) because of the multiple registers and the pipelining which will be described in conjunction with Figure 13. As mentioned, one advantage to this multiprocessor operation is that interrupts are not needed, particularly for dealing with input and 15 output signals. The multiprocessor operation is achieved without the use of separate ALUs for each processor. In the currently preferred embodiment, economies of layout are obtained by using two ALUs, (102a and 102b) however, only one of the ALUs operates at any given time. (Note the BBUS provides an input to both 20 ALUs.) Therefore, the multiprocessor operation of the present invention may be obtained using a single ALU.
~, .
;~,i t 326~
The processing system has four processors sharing an address ALU, a data ALU and memory. A basic minor cycle takes four clock cycles for each processor. The ALUs take one clock cycle and the memory takes one clock cycle. The minor cycles for each processor are offset by one clock cycle so that each processor can access memory and ALUs once each basic minor cycle. Since each processor has its own register set it can run independently at its normal speed. The system thus pipelines four processors in parallel.
Each register of Figure 12 is associated with one of four groups of registers and each group facilitates the multiprocessor operation and is associated with a processor t1-4) of Figure 13.
Each of the four groups includes one base pointer register, effective address register, instruction pointer register, top of 1~ stack register, stack pointer register, return pointer register, instruction register, CRC register, next register, and a carry flag.
Each related group of registers corresponds to one of the four ,~ processors. Each processor executes instructions in minor cycles, each minor cycle consisting of four clock cycles. During , 20 the first clock cycle a processor will gate the appropriate registers onto the ABUS, BBUS and CBUS. In the next clock cycle the ALUs will be active generating data from their inputs of the ' ,, r. - 5 8 ABUS, BBUS and CBUS. Memory or l/O will be active during the third clock cycle, with the address coming from the ALU 102a and data either being sourced by memory or the ALU 102b. The fourth and final clock cycle will gate the results from memory or the ALU 102b into the appropriate register via the D~US.
. A processor can be viewed as a wave of data propagating through the sequence described above. At each step the ; intermediate results are clocked into a set of pipeline registers.
By using these pipeline registers it is possible to separate the individual steps in the sequence and therefore have four steps executing simultaneously. The four processors can operate without interfering with one another even though they share the ` ALUs, memory, I/O and many control circuits.
The control of a processor including the pipelining is best . 15 understood from Figure 11. For each processor there is a 3 bit counter and an instruction register. These are shown in Figure 11 as counters 137a through 137d, each of which is associated with ~ one of the instruction registers 1 25a through 1 25d, respectively.
- Each of the instruction registers is loaded through the DBUS. As . 20 an instruction register is loaded, the instruction is coupled to a PLA 212. This PLA determines from the instruction how many - minor cycles are required to execute the instruction and a 3 bit f .~
. .
.
1 32627~
binary number is then loaded into the counter 113a or 113b or - 11 3c or 11 3d, associated with the instruction register 1 25a, or 125b, or 125c or 125d being loaded. For instance, for a CALL
instruction loaded into instruction register 1 25c, the binary 5 number 010 (indicating three minor cycles) is loaded into counter 137c. (Up to 8 minor cycles can be used for a given instruction, - ~ however, only up to 6 minor cycles are used for any of the instructions in the currently preferred embodiment.) The count value "000" is used to cause a new instruction to be fetched.
The count (e.g., 3 bits) in a counter and the instruction (e.g., 12 bits) in its associated instruction register from a 15 bit input to the PLA 136. These 15 bit inputs from each of the respective four sets of count registers and four sets of instruction registers are sequentially coupled to the PLA 136 as will be described. The 15 output of the PLA controls the operation of the processors. More :.`
,- specifically: lines 213 control data flow on the ABUS, BBUS and ~ CBUS; lines 214 control the ALU 102; lines 215 control the .^ memory; (and, as will be described later l/O operation of subsections 107, 108, 109 and 220) and lines 216 control data 20 flow on the DBUS. The specific outputs provided by the PLA 136 for a given instruction is best understood from the instructions set, set forth later in this application. The action taken by the . .
,:
1 32627~
processors to execute each of the instructions is described with the instruction set.
The outputs from the PLA on lines 213 are coupled directly to the devices controlling data flow on the ABUS, BBUS, and `~ 5 CBUS. The signals controlling the ALU are coupled through a one clock phase delay register 217 before being coupled to the ALU
via the lines 214. Since all the registers 217 are clocked at the same rate, the register 217 performs delay functions as will be described. Those signals from the PLA 136 used for memory control are coupled through two stages of delay registers 217 before being coupled to the memory, thus the signals on lines 215 are delayed for two clock phases related to the signals on lines 213. The control signals for the DBUS after leaving the PLA 136 are coupled through 3 sets of delay registers 217 before being coupled to the lines 216 and therefore are delayed three clock phases related to those on lines 213. The registers 217 are clocked at a 6mHz rate, thus when the PLA 136 provides output ; control signals for a given instruction (e.g., contents of instruction register 1 25a) the control signals during a first clock phase are coupled to lines 213, during a second clock phase, lines 214; during a third clock phase, 215; and during a fourth clock phase to lines 216. During the first clock phase of each , 1 326~7~
instruction cycle, the contents of the counter 137a and the - instruction register 12~a are coupled to the PLA 136. During the second clock phase, the contents of the counter 137b and instruction register 125b are coupled to the PLA 136 and so on 5 for the third and fourth clock phases.
Assume now that instructions have been loaded into the instruction registers 125a through 125d and the counters 137a through 137d have been loaded with the corresponding binary counts for the minor cycles needed to perform each of the 10 instructions. For example, assume that register 125a is loaded with a CALL instruction and that 010 has been loaded into counter 137a. During a first instruction minor cycle, 010 and the 12 bit instruction for CALL are coupled to the PLA 136. From this 15 bit input PLA 136 provides at its output all the control signals 5 needed to complete the first minor cycle of the CALL instruction (e.g., four clock phases) for the ABUS, BBUS CBUS, the ALU, the memory and the DBUS. Since the system uses pipelining multiprocessing, the control signals on lines 213 used to carry .~ out the first clock phase of the CALL instruction which is the 20 inputs to the ALUs.(During this first clock phase the other control lines are controlling the ALU, the memory and the DBUS of other processors, for different instructions in the pipelines.)During ' .
;
phase 2, the count in counter for 137b and the instruction in register 125b are coupled to the PLA 136. During phase 2, the signals on lines 213 now control the ABUS, BBUS and CBUS inputs to the ALUs for the second processor to carry out the instruction 5 contained in register 125b. During this second clock phase, the signals on lines 214 control the first processor and the ALU to perform the functions needed to carry out the second clock phase of the CALL instruction contained in register 125a. (Note a delay equal to one phase was provided by register 217.) Similarly, ~ 10 during the third phase, the signals on lines 213 control the ABUS, : BBUS, and CBUS for the third processor to carry out the instruction contained in register 125c; the signals on lines 21 ~
- control the ALU to carry out the instruction contained in register - 125b, and the signals on lines 215 control the memory to carry 15 out the instructions in register 125a for the first processor.
; And, finally, during the fourth clock phase, the instruction from register 125d, along with the count in counter 137d are coupled to the PLA 136. The signals on lines 213 control the ABUS, BBUS
and CBUS to carry out the instruction contained within register 20 125d fourth processor; the signals on lines 214 control the ALU
to carry out the instruction in register 125c for the third processor; the signals on lines 215 control the memory to carry , '' , - :
1 3 2 6 2 7 ~
out the instruction in register 125b for the second processor; and the signals on lines 216 control the DBUS to carry out the instruction in register 1 25a for the first processor.
After four cycles of the 16mHz clock the count in register 5 137a decrements to 001. Each register is decremented on the clock cycle following the use of the contents of the counters contained by the PLA 136. The input to the PLA 136 thus changes even though the instruction within register 1 25a is the same.
This allows the PLA 136 to provide new output signals needed for .. 10 the second minor cycle of the CALL instruction. These control signals are rippled through the control through the control lines 213, 214, 215 and 216 as described above. When the count in a counter reaches 000, this is interpreted as an instruction fetch for its associated processor.
Therefore, each of the four processors may simultaneously ` execute an instruction where each of the instructions has a different number of cycles. The control signals reaching the - imaginary line 219 for any given clock cycle represent control signals for four different instructions and for four different 20 processors. For example, the control signals associated with the first processor during a first cycle appear on lines 213; during a second cycle on lines 214; during a third cycle on lines 215; and 1 32627~) - during a fourth cycie on lines 216. The control signals needed by the second processor follow behind; those needed by the third and fourth processors following behind those used by the second processor.
The pipelining of the signals is illustrated in Figure 13.
The multiprocessor operation of the processor lO0 of Figure lO is shown in Figure 13 as four processors, processors 1, 2, 3 and 4.
Each one of the groups of registers is associated with one of the :~ processors. The four phases of a single instruction cycle are shown at the top of Figure 13. In Figure 13, registers 101 are used to indicate that the contents from the specific registers called for in an instruction are placed on the ABUS,BBUS and CBUS. The registers are 118, 119 and 120 on the ABUS; 122, 123, :! 124 and 125 on the BBUS; 120, 122, 129, 130 and 131 on the , 1 5 CBUS.
During a first phase, signals previously stored in the group I
., u registers (e.g., two of them) are gated from the registers onto the ABUS,BBUS and CBUS. While this is occurring, signals associated : ,~
; with the group 2 registers are gated from the registers 141, 142, j} 20 143 into the ALU 102a and 102b. This is shown in Figure 13 as : processor 2 under the first phase column. Simultaneous signals -~ are gated from registers 145a and 145b into the memory for ,,:
1 326~7~
group 3 registers for processor 3. And, finally, during this first phase, signals associated with the group 4 registers are gated from rPgisters 146 onto the DBUS. During the second phase, signals associated with a group I registers are coupled from the ~ ~ ALU to registers 145. The data associated with group 2 registers - are coupled to memory. The data associated with the group 3 registers is coupled from the register 146 onto the DBUS. Those associated with the group 4 registers are gated onto the ABUS, BBUS and CBUS . And, similarly, during the third and fourth phase 10 of each instruction cycle, this pipelining continues as shown in Figure 13, thus effectively providing four processors.
E. PROCESSOR INSTRUCTIONS
. In this section each instruction of the processor is set ` 15 forth, along with the specific registers and memory operations.
Lower case letters are used below to indicate the contents of a register. For example, the contents of the instruction register are shown as "ip". The registers and flags are set forth below with their correlation to Figure 12.
.
:, 1 32627~
IDENTIFICATION
ip instruction pointer ~14 bits) 1 20 - (fixed range of 0000 - 3FFF) ~: ~ (not accessible to ROM based programs) i r instruction register (12 bits) 125 (not accessible to ROM based programs) ~ 10 bp base page pointer (14 bits) 118 - (fixed range of 8000 -FFFF) (write only) ea effective address pointer (16 bits) 1 19 (not accessible to ROM based programs) sp data stack pointer (8 bits) 123 (positive offset from bp, grows down) r p return stack pointer (8 bits) (positive offset from bp, grows up) 124 i, . . .
, . .
, ,, , , :
,~ , - ':
''', , ~.
. .
- ~ . , . . : ~ . . -.
~'"'' . .
`` 1 32627~
.
tos top of data stack (8 bits) 122 -, next item below top of data stack (8 bits) 131 ..
`:
crc used as scratch or in 130 . CRC calculations (8 bits) , .` flags carry flags, (1 bit) 129 processor ID (2 bits) The top element of the return stack is also addressable as a register, even though it is physically located in RAM.
i , Instruction Table , 15 CALL 1 aaa aaaa aaaa Subroutine call ; .
CALL lib 0000 aaaa aaaa Library call 20 BR 0010 1 aaa aaaa Branch BRZ 0010 00aa aaaa Branch on TOS==0 .;
, ,, ,',: ' ` .' ' , .
,'~
-.
.
BRC 0010 11aa aaaa Branch on Carry set CALL interseg 0011 LLLL LLLL (Subroutine) - 5 0000 hhhh hhhh Two word instructions ,~j f' - LIT 0101 1ffhbbbb Constant op TOS
. ~
. LDC 0101 111 hbbbb Load Constant ALU 0101 OOefffff Top of Stack and NEXT
;, RET 0101 00111101 Return or Bit set in other instruction IN,OUT 0100 Owrr rrrr Read/Write l/O Registe i, ,~
-~" LD,ST bpla 0100 1waa aaaa Load, Store , .~ 20 LD,ST (bp~p)~a 011 p pwaa aaaa Load, Store LDR,STR r 0101 010wrrrr Load, Store CPU reg , "
., .
~ 69 ;, ,, .
" . .. ., .:
. .. ... - .
.
~ 3~6275 For each instruction, the operation, encoding and timing are set forth below in standard C language notation.
CALL Call Procedure ; Operation:
. -*rp++ = lowbyte (ip);~rp++ = hibyte (ip);
:' 10 ip = dest;
Encoding:
,~
intra-segment:
1 aaa aaaa aaaa dest = ip + a + 1; /~ displacement a is always negative ~/
inter-segment:
.. 20 0000 HHHH HHHH
. ~ .
dest = H:L; /~ 16 bit absolute address ~/
.
., ~; ' .
- . -' ' ' ' ' ' ~ , , r ~
1 32627~
library:
0000 aaaa aaaa dest = Ox8000+*(0x8001 + a); /~ table lookup call ~/
^~ Timing:
,~
, CALL type#clocks specific memory operation ..
intra-seg 3 2 ~rp++ = lobyte (ip) ''?~ 1 ~rp++ = hibyte (ip) 0 ir = ~(ip = ~dest) interseg 5 ~...
4 lobyte (ea) = ~ip++
. 3 hibyte (ea) = *ip 2 ~rp++ = lobyte (ip) i. 1 ~rp++ = hibyte (ip) ~ 20 0 ir = ~(ip = ~dest) . . .
Iibrary 4 .
;, .
, , , .
1 32627~
3 ~rp++ = lobyte (ip) 2 ~rp++ = hibyte (ip) 1 ip = dest 0 ir= ~ip BR Branch always Operatio n:
ip = dest;
1 0 Encoding:
,, - 0010 1 aaa aaaa ., , dest = ip + a + 1; /~ displacement a is sign extended ~/
: ~ 1 5 . Timing:
s #clocks specific memory operation ~ .
. 20 0 ir = ~(ip = dest) .. ..
, . .
^- 72 , .
~':
.
, ` ' , ~ 32627~
BRC Branch on carry .` Operation:
'' if ( CF ) ip = dest;
` else ip++;
. ,.
Encoding:
A `
`~ 10 001 0 01 aa aaaa dest = ip + a + 1; /~ a is sign extended ~/
Timing:
. .
#clocks specific memory operation 0 ir = ~(ip = dest) or 0 ir = ~(++ip~;
', 5 ..
~ 73 "
BRZBranch on TOS==0 Operation:
if (tos==0, tos=next, next= ~(++sp) ) ip = dest;
else ++ip;
Encoding:
, 10 001 0 00aa aaaa dest = ip + a + 1; /~ displacement a is sign extended ~/
15 Timing:
#clocks specific memory operation 2 1 tos = next;
next=~(++sp);
0 ir = ~(ip = dest) .
or 0 ir = ~(++ip) LDR Move register to TOS
(includes certain indirect, indexed memory reference) Operation:
~(sp--) = next;
if (reg) { next = tos; tos = reg }
else { next = bp+TOS or next= (bp+2p)+TOS }
1 0 Encoding:
01 01 01 00 rrrr reg = r /~ see table ~/
Timing:
#clocks specific memory operation (if (bp+p)+TOS) 5 4 lobyte(ea) = ~(bp+2p) 3 hibyte(ea) =~(bp+2p+1 ) (if reg, bp+TOS) 3 2 ~sp-- = next . 20 if (reg) next = tos;
if (reg) tos = reg else next=bp+TOS, ea+TOS
, . , . ~
' , :
o ir = *(++ip STR Store TOS to register (includes certain indirect, indexed memory reference) Operation:
if (reg) { reg = tos; tos = next; }
else ~ bp+TOS = next or (bp+2p)+TOS = next }
next = *(++sp);
Encoding:
0 1 0 1 0 1 0 1 r r r r reg = r /~ see table */
Timing:
~clocks specific memory operation (if (bp+p)+TOS) 5 4 lobyte(ea) = *(bp+2p) , .
15 3hibyte(ea) =*(bp+2p+1 ) if (reg, bp+TOS) 3 ~, 2 if (reg) reg = tos;
^ else bp+TOS,ea+TOS=next if (reg) tos = next;
20 next=*(++sp);
0 ir = *(++ip);
Register assignments 0 0 0 0 Flags CFx ID1 ID0 0 0 0 1 CRC low byte (high byte in TOS) 0 01 0 lowbyte (bp) If write ~/
next ("OVER" instruction) /~ read ~/
0 0 1 1 highbyte (bp) /~ write ~/
tos ("DUP" instruction) /~ read ~/
0 1 0 0 sp 0 1 0 1 rp 0 1 1 0 see RPOP, RPUSH
) 01 1 1 ~(bp+TOS) /~ indexed fetch,store ~/
1 0 0 0 ~(~(bp+0)+TOS) . /~ indexed indirect ~/
1 0 0 1 ~(*(bp+2)+TOS) /~ indexed indirect ~/
-"
' ' .
t 32627~
1 01 0 ~(~(bp+4)+TOS) /~ indexed indirect ~/
1 01 l *(*(bp+6)+TOS) /* indexed indirect */
RPOP pop return stack Operation:
~(sp--) = next;
next = tos;
tos = *rp--;
Encoding:
Timing:
#clocks specific memory operation ,. -~:
1 32627~
2 ~sp-- = next next = tos;
tos = ~rp--;;
0 ir = ~(++ip) RPUSH push tos onto return stack ~i Operation:
~(++rp)=tos;
tos = next;
: next=~(++sp);
` Encoding:
1~
Timing:
#clocks specific memory operation . .
..
1 32627~
2 ~(++rp) = tos;
tos = next;
next = ~(++sp);
0 ir=~(++ip) IN Move l/O register to TOS
Operation:
~(sp--) = next;
next = tos;
tos= reg;
Encoding:
01 00 00rr rrrr , Timing:
i #clocks specific memory operation 2 ~sp-- = next - ; . .. .
.' ' .
.
.
~ 326~75 next = tos;
tos = reg;
0 ir=~(++ip);
OUT Store TOS to l/O register Operation:
reg = tos;
tos = next;
next =~(++sp);
, Encoding:
01 00 01 rr rrrr . 1~
Timing:
#clocks specific memory operation 2 reg = tos;
tos= next;
, , ~ 3~6~7~
next = ~(++sp);
0 ir = ~(++ip);
LDC load constant (into TOS) Operation:
~sp-- = next;
next = tos;
tos = constant;
Encoding:
01 01 1 1 1 H bbbb 1~ if (H==0) constant . 0000:bbbb;
else constant. bbbb:0000 Timing:
. ~ .
#clocks specific memory operation 2 ~(sp--) = next;
next = tos;
,. , .. -.
1 3~ ~7 ~
tos 5 constant;
O ir=*(++ip) !
LD (bp+a) load from base page Operation:
~sp-- s next next = tos tos = *(bp+source);
Encoding:
,, 0100 1 Oaa aaaa ` 15 source = aa aaaa Timing:
#clocks specific memory operation - 20 2 *sp-- = next;
next = tos;
, .. .
,~ .
,,, , ~ ' tos = ~ (bp+source);
o ir=~(++iP) LD (bp+p)+a load indirect ( TOS with byte addressed by pointer at bp+offset then indexed by TOS) ; Operation:
, 10 ~sp-- = next;
next = tos tos = ~(~(bp+2p)+offset);
Encoding:
01 1 p pOaa aaaa offset = aa aaaa Timing:
#clocks specific memory operation ,~ .
4 lobyte(ea) = ~(bp+2p) 3 hibyte(ea) =~(bp+2p+1 ) .. ..
., .
..
-` ~ 3~6~7 ~
2 *sp-- = next;
next = tos;
tos=* (ea+offset) 0 ir z *(++ip) ST (bp+a) store into base page Operation:
.j , *(bp+dest) = tos tos= next;
next = *(++sp) Encoding:
15 0100 1 1 aa aaaa dest = aa aaaa . .
Timing:
#clocks specific memory operation 2 *(bp+dest) = tos;
,, , ~,............ .. ,., , ~ ....
, .
`: ~326~7~
tos = next;
next=~ sp);
0 ir=~(++ip) 5 ST (bp+p~+a store indirect ( TOS into byte addressed by pointer at bp+2p offset by a) ., Operation:
1 0 ~(~(bp+2p)+offset)=tos;
;- tos = next;
next = ~(++sp) :' Encoding:
01 1 p p1 aa aaaa offset = aa aaaa :: Timing:
~ 20 : #clocks specific memory operation . ,.
;::
";
,~, :
' 1 326~7~
4 lobyte(ea) = ~(bp+2p) 3 hibyte(ea) =~(bp+2p+1 ) 2 ~ (ea+off) =tos tos = next;
next=~(++sp) o ir=~(++iP) ALU Group ]
1 0 Operation:
if (r==1 ) '!,:, hibyte(ip) = ~rp--;
lobyte(ip) = ~rp--;
}
pipe = tos; /~ internal processor pipeline ~/
tos = tos op next;
switch (s) {
case 0: next= next; /~ typical unary op ~l case 1: next = ~(++sp); /~ typical binary op ~/
i }
,.~ .. .
' ~'' .
~f- 87 .., ., .
~ ' :
1 32627~
Encoding:
0 1 0 1 0 0 r f f f f f op = fffff /~ s equal to high order f bit ~/
s = (1==unary op), (0==binary op) Op Table:
code operation carry state 00000 tos + next arith carry 00001 tos + next + carry arith carry :~ 00010 next - tos arith borrow 00011 next - tos - carry arith borrow 00100 tos- next arith borrow : 01000 tos AND next unchanged ...
, . ..
', ,: . . ~ :
~ ~ .
. .
01001 tos OR next unchanged 01 01 0 tos XOR next unchanged 01 100 drop unchanged 01 101 swap-drop unchanged .
: 01111 CRC step unchanged 10000 asl (TOS) tos7 ` 10001 asr (TOS) 0 . 10 10010 rotate left(tos) tos7 10011 rotate right (tos) tosO
10100 tos parity(TOS) '; 1011 0 .- 15 10111 30f6 encode set if not valid ..
., ~, ., ~, .
~ .
s i s .`
~ 89 110 0 0 Isl (TOS) 11001 Isr (TOS) 110 10 shift left by 4 110 11 shift left by 4 11100 swap 1 1 1 01 tos (NOP) 11110 NOT(TOS) 11111 3Of6 decode Timing:
s#clocks specific memory operation ;' 2 (4) (if r==1 ) 3 hibyte(ip) = ~rp--; ) 1~ (if r==1 ) 2 lobyte(ip) = ~rp--;
`~ 1 tos = alu output 0 ir= *(++ip) 0 3 (5) (if r==1 ) 4 hibyte(ip) = ~rp--; ) (if r==1 ) 3 lobyte(ip) = ~rp--;
,- 2 tos = alu output .'~ .....
.
~ .
.
.: , ' . .
.
.
' t 326275 ~(++sp) = next 0 ir = ~(++ip) SWAP special case The exchange of TOS with NEXT is a special case of the ALU ops using the direct data path between TOS and NEXT. The NEXT register receives a cc - of the TOS via a pipeline register, prior to TOS being loaded with the conter of NEXT (non-simultaneous transfer).
.. 10 "~ NOP
~,.
:, - Operation:
. .
, 15 ++iP;
. -, Encoding:
~;~
..
short 0 01 0 1 0 0 0 0 0 0 0 ~ 20 - long 01 01 0 0 01 1 1 01 , ~.
~ 326275 Timing:
#clocks specific memory operation short (BR +1) 0 ir = ~(~+ip) long 2 1 tos = tos o ir = ~(++ip) ` 10 RET return from subroutine Operation:
-.~
.
hibyte(ip) = ~rp--lobyte(ip) = ~rp--.-~ ++iP;
;.
,i ~ Encoding:
. ~
s 20 0 1 0 1 0 0 1 1 1 1 0 1 . ., ~ .
~ Timing:
,,~ ....
, ., .
, .
.,- .
.
#clocks specific memory operation 3 hibyte(ip) = ~rp--f 2 lobyte(ip) = ~rp--tos = tos f 0 ir= ~(++ip) ~ LITERAL Group ]
f Operation:
tos = tos op constant;
f Encoding:
! 15 01 01 1 ffH cccc op = ff if (H==0) constant= 0000:cccc else constant = cccc:0000 f Op Table:
code operation carry state i , .
, , ,.
. . ~
, ~ " .
, : ,, .
~.
/ ~
t 326275 00 tos + constant arith carry 01 tos - constant arith borrow 00 tos ANl) constant 11 constant (see LDC) Timing:
#clocks specific memory operation : 2 . 1 tos = alu output 0 ir = ~(++ip) F. THREE-OF-SIX CIRCUITRY
As previously mentioned, the ALU 102b contains means for 15 encoding four bit nibbles into six bit words for transmission (encoder of Figure 14) and for decoding six bit words into the four bit nibbles (decoder of Figure 15). Both the encoder and decoder use ;'j hardwired logic permitting the conversion to be performed very quickly in both directions. Moreover, ~here is a circuit shown in , 20 Figure 16 to verify that each six bit word received by the cell is in . fact a three-of-six code, that is, three zeroes and three ones (Figure ,.
", g) . ., ., . . .
.. ~
: - :
.~ - ~ , ~ ., , i -, ' ' - ' .
'; . ,.,.' . ':
.~ , . . .
. . ~, . . ,,.; . . ., ~ ~
~ 32627~
Referring to Figure 14 the register 142 is illustrated with four bits of the register containing data D0 through D3. If the ALU is commanded to encode this data, the resultant six bits will be .- coupled into the latch register145b. To obtain the conversion shown5 in Figure 9, the Do bit is directly coupled into first stage of register 145b and becomes Eo, the encoded bit. Also, the bit D3 is directly coupled into the register and becomes Es Each of the remaining bits E1 through E4 are provided by the logic circuits 153 through 150, respectively. Each of these logic circuits are coupled to receive Do, 10 D1, D2 and D3. Each logic circuit contains ordinary gates which implement the equation shown within its respective block. These equations are shown in standard "C" language ( "&" = logical AND, "!"=
logical NOT, and "I" = logical OR.) These equations can be implemented with ordinary gates.
The decoder of Figure 15 is shown in a similar format. This time the six bits of the encoded data are shown in register 142.
The decoded four bits of data are shown in the register145. To implement the pattern assignment shown in Figure 9, the Eo bit is coupled directly to the register 145 and becomes Do. The Es bit 20 is coupled directly to the register145 and becomes the D3 bit.
Logic circuits 154 and 155 provide the bits D2 and D1, respectively. Circuit 154 is coupled to receive the bits Eo, E3, E4 ' ,:
-`` 1 32627~
and E~ while the circuit 155 receives Eo, E1, E3, and E5 (E2 is not used to provide the Do through D3 bits.) (Some of the six bit patterns are not used and others are used for synchronization and thus do not require conversion into a data nibble ) The circuits 5 154 and 155 are constructed from ordinary logic gates and implement the equations shown. The symbol ~ A " represents the exclusive OR function in the equations.
The circuit of Figure 16, as mentioned, verifies that the received six bit words do contain three zeroes and three ones.
;- 10 The encoded words are shown coupled from the top of stack register 122 into the two full adders, 157 and 158. These adder stages are contained within the ALU 102b. Each adder receives an X, Y and carry input and provides a sum and carry output. These ordinary adder stages are each coupled to receive one bit of the 15 encoded word as shown. (Any coupling of each bit to any input of address 157 and 158 may be used.) The carry outputs of the - adders 157 and 158 are coupled to the exclusive OR gate 159; the - sum outputs of the adders 157 and158 are coupled to the exclusive OR gate 160. The output of the gates 159 and 160 are 20 coupled to the input terminals of an AND gate 161. If the output of this AND gate is in its high state the word in the register 102 contains three ones and three zeroes. Otherwise, the output of ., ~
- . . ..~
. .
t 326275 the gate 161 is in its low state (abort condition). The incoming packets are checked to determine that each six bit word is valid, while it is decoded into the four bit nibbles.
IV. INPUT/OUTPUT SECTION
A. General The l/O section includes a plurality of circuit elements such as a ramp generator, counter, comparator, etc., which are interconnected in different configurations under software control. Examples of this are shown below for the analog-to-digital (A to D) and digital-to-analog (D to A) operations. These elements with their software configurable interconnections provide great flexilibity for the cell, allowing it to perform many tasks. The entire l/O section is preferably fabricated on the same "chip" which includes the processor.
. B. Buffer Section As shown in Figure 10 and previously discussed, each of the cells includes four input/output l/O subsections; three of the subsections 107, 108, and 109 each have a pair of leads, -, 20 identified as Pin A and Pin B. The fourth subsection 110 has a ~ single "read only" pin 106. Any of the four subsections can;. communicate with any of the four subprocessors. As shown in .. ..
., ., :
1 32627~
Figure 12, this is easily implemented by connecting the address bus (ADBUS) and the memory bus (MBUS) to each of the four l/O
subsections. Use of the MBUS through the register 146 to the DBUS allows the l/O subsections to communicate with the 5 processor registers.
Each Pin A and Pin B can receive and provide TTL level signals and is tristated. In the currently preferred embodiment, each pin can sink and source approximately 40milliamps (except for pin 106). All the Pin A's can be programmed to provide an 10 analog output signal and a digital-to-analog converter is included in three of the l/O subsections 107, 108 and 109 to provide an analog output on Pin B. An analog input signal on any of the Pin B's can be converted to a digital count since three of the l/O
subsections include A to D converters coupled to these pins. Each 15 pin pair (Pin A and Pin B) can operate as a differential amplifier for input signals, a differential receiver, and a differential transmitter and a differential voltage comparator. The l/O
subsections can be used to perform many different functions, from simple switching to, by way of example, having two pin ; 20 pairs coupled to drive the windings of a stepping motor.
The circuits shown in Figures 17-23 are repeated in subsections 107, 108 and 109. Those circuits associated with . .
.
t 326~7~j Pin A and Pin B (such as the buffer sections of Figure 17) are not fully contained in the l/O subsection 110. Only sufficient buffering to allow data to be read on Pin 106 is needed.
Referring to the l/O buffer section of Figure 17, outgoing 5 data is coupled to Pin A through the buffer 163. Similarly, outgoing data is coupled to Pin B through the buffer 164 after the data passes through the l/O control switch 165. This outgoing data, by way of example, is coupled to Pin A from the register 206 of Figure 23 through gate 208 of Figure 19. The control 10 switch 165 is used to enable outputs to Pin A through the buffer 163, when enable A (EN.A) is high (line 166). Moreover, the switch enables the output to Pin B when enable B (EN.B) is high ~- (line 167) and enables outputs to both pins (with the output to PinB being inverted) when enable RS-485 is high (line 168). The 15 outgoing analog signal to Pin A is provided through the switch 175 when the enable analog output signal is high.
Incoming signals to Pin A are coupled to one input terminal of the differential amplifier 169. The other terminal of this :~ signal receives a reference potential (e.g., 2.5 volts). This 20 amplifier also includes the commonly used hysteresis mode to prevent detection of noise. This mode is activated when the enable hysteresis (Pin A) signal coupled to amplifier 169 is high.
.
., .
, .
-~ 3~6~7~
The output of amplifier 169 is coupled to a transition detectioncircuit 171 which simply detects each transition, that is, a zero to one, or one to zero.
The inputs to Pin B are coupled to one terminal of a 5 differential amplifier 170 which may be identical to amplifier 169. The amplifier 170 receives the enable hysteresis (Pin B) signal. The other input to amplifier 170 (line 176) can be coupled to receive one of several signals. It can receive a DC signal used for voltage comparisons, a ramp which shall be discussed later, 10 the signal on Pin A for differential sensing, or a reference potential (e.g., 2.5 volts). The output of the amplifer 170 can be inverted through the exclusive OR gate 177 for some modes of operation. A transition detector 172 is associated with the Pin B
inputs, again to detect transitions of zero to one or one to zero.
15 C. I/O Counting/Timing Each of the cells includes a timing generator (RC oscillator) for providing a 16mHz signal. This signal is connected to a rate . multiplier 178 contained in the l/O section (Figure 18). The multiplier 178 provides output frequencies to each l/O
20 subsection. This multiplier provides a frequency fo equal to:
fo = 16MhZ X (LOADED VALUE) ' 216 : .. .
~' .
" ' ~ , .
t 326~7~
The loaded value is a 16 bit word loaded into a register of a rate multiplier 178. The rate multiplier comprises four 1 6-bit registers and a 16-bit counter chain. Four logic circuits allow selection of four different output signals, one for each 5 subsection. Two bus cycles (8 bits each) are used to load the 16 bit words into the register of the rate multiplier 178. As can be seen from the above equation, a relatively wide range of output frequencies can be generated. These frequencies are used for many different functions as will be described including bit 10 synchronization.
The output of the multiplier 178 in each of the subsection is coupled to an 8 bit counter 179. The counter can be initially loaded from a counter load register 180 from the data bus of the processors. This register can, for example, receive data from a ` 15 program. The count in the counter is coupled to a register 181 and to a comparator 182. The comparator 182 also senses the 8 bits in a register 183. The contents of this register are also -~ loaded from the data bus of the processors. When a match between the contents in the counter and the contents of register 20 183 is detected by comparator 182; the comparator provides an event signal to the state machine of Figure 19 (input to .j .
multiplexers 190 and 191). The contents of the counter 179 can be latched into register 181 upon receipt of a signal from the state machine (output of the execution register 198 of Figure 19).
The same execution register 198 can cause the counter 179 to be loaded from register 180. When the counter reaches a full count 5 (terminal count) a signal is coupled to the state machine of Figure 19 (input to multiplexers 190 and 191).
.
D. I/O CONTROL AND STATE MACHINE
Referring to Figure 19, the processor MBUS communicates 10 with registers 1~5 and 186 both of which perform masking functions. Three bits of the register 185 control the selection of one of the five lines coupled to the multiplexer 190; similarly, 3 bits of the register 186 control the selection of one of the five lines coupled to the input of the multiplexer 191. The output of :' 15 the masking registers 185 and 186 are coupled to a multiplexer 187. The five bits from the multiplexer 187 are coupled to a register 198. Each of these bits define a different function which is, in effsct, executed by the state machine. Specifically, the bits control load counter,latch count, enable ramp switch, pulse 20 Pin A" and pulse Pin B.
The multiplexers 190 and 191 both receive the terminal count signal from counter 179 of Figure 18, the compare signal ~ .. -.
from comparator 182, the ramp start signal from the ramp generator 200 of Figure 20, and the transition A and B signals from the transition detectors 171 and 172, respectively of Figure 17. The one bit output from each of the multiplexers 190 and 191 5 is coupled to an OR gate 188. This OR gate is biased in that if an output occurs simultaneously from both multiplexers 190 and 191, priority is given to multiplexer 190. The output of the multiplexer 190 controls the multiplexer 187 with the signal identified as "which event". This signal is also stored in the 3x3 10 first-in, first-out (FIFO) buffer 199. This signal indicates which MUX 190 or 191 has received an event and this data is stored along with the inputs to Pin A and Pin B (Figure 17) in the FIFO
1 99 .
The state machine for each of the l/O subsections 15 comprises 4 D-type flip-flops connected in series as shown in Figure 19 within the dotted line 189. The flip-flops 194 and 196 receive the 8mHz signal whereas the flip-flops 193 and 195 receive the complement of this timing signal. The clocking signal (CLK) is obtained from the Q output of the flip-flop 194 20 and is coupled to register 198 and FIFO 199. The clear signal received from the Q terminal of flip-flop 196 is coupled to the register 1 98.
, .. .
1 32627~
In operation, the masking registers 185 and 186 are loaded under software control. The bits from register 185, for instance, cause the selection of one of the input lines to multiplexer 190, for example, terminal count. Then the circuit of Figure 19 waits 5 for the signal terminal count. When the signal terminal count occurs the state machine begins operating and the five bits of data from register 185 are connected through multiplexer 187 into register 198. The state machine causes an output to occur on one of the lines from register 198 causing, for example, a pulse 10 to be generated on pin A. Similarly, a word in register 186 can be used to cause, again by way of example, the counter to be loaded.
The flip-flops 203 and 204 are clocked by the output of register 198. These flip-flops allow the output signal to be controlled. The OR gate 208 permits data from a shift register 15 206 of Figure 23 to be coupled to Pin A. This register is discussed later.
The low order 6 bits of the ADBUS are input to decoders in the l/O subsections 107, 108, 109 and 110 of Flgure 12. Two of . the bits are used to select a specific l/O element and the rest are 20 decoded to control an operation. The PLA 136 of Figure 11 has generalized outputs 215 connected in parallel to all l/O
subsections 107, 108, 109 and 110 to select the ABUS clock cycle :
, ::,.. , :
.
1 32~75 for data to be used for controlling operation of the l/O
subsections.
E. ANALOG TO DIGITAL AND DIGITAL TO ANALOG
CONVERSION
Referring first to Figure 20, the l/O subsystem includes a ramp generator 200 which continually generates ramps of a known period. The output of the ramp generator is buffered through buffer 201 and selected by switch 202. The switch, as will be described, is selected at some count (time) following the start of each ramp, thereby coupling the same potential to the capacitor 203. This capacitor becomes charged and potential is coupled through buffer 204 to Pin A when the switch 175 is closed. (Switch 175 is shown in Figure 17.) The switch 202, ; capacitor 203, and buffer 204 act as a sample and hold means.In Figure 21 several of the circuit elements previously described have been redrawn to describe how a digital to analog : conversion occurs and to show how the circuit elements of thel/O subsection can be reconfigured through software by the l/O
control and state machine of Figure 19 to perform different functions.
For a digital to analog conversion an appropriate frequency (fo) is selected from the rate multiplier 178 or counter 179 of ' 1 326~75 Figure 18, which corresponds to the period of the ramps being generated by ramp generator 200 (Figure 21). A digital value which corresponds to the desired output analog signal is loaded into the register 183. When a ramp begins the ramp start signal 5 is coupled through the state machine 189 of Figure 19 (for example, through the rnultiplexer 190) and the flip-flops). This causes the counter 179 to be cleared (e.g., all zeroes). The fo signal then counts into counter 179. The comparator 182 then compares the contents of the counter179 with the contents of 10 register 183. When the two words are the same, the compare signal is applied through multiplexer 191 again causing the state machine to be activated as indicated by "SM1~, 189 and the switch 202 of the sample and hold means to close. For each ramp generated by the ramp generator, the ramp switch 202 is closed 15 (e.g., for 500 nanoseconds) causing the capacitor 203 to be charged to a DC voltage which corresponds to the digital number placed in register 183.
One manner in which the A-D conversion can be performed is shown in Figure 22. The input analog signal is applied to one 20 input terminal of the differential amplifier 170. The ramp is applied to the other terminal of the amplifier 170. Initially, when the ramp is started, the state machine 189 causes the , . .
' -1 326~7 ~
counter 179 to be loaded from register 180 (e.g., all zeroes). The counter is clocked at a frequency (f~ suitable to the period of the ramps. When the transition detection 172 detects that the potential on Pin B and the ramp have the same potential, the state 5 machine 189 causes the count in the counter 179 to be latched into latch 181. The digital word in latch 181 corresponds to the DC potential on Pin B, thereby providing the analog to digital conversion.
F l/O COMMUNICATIONS
As previously discussed, for instance, in conjunction with Figure 1, each cell can transmit data over communications lines or other links. The cells in a subchannel transmit data at the same rate typically determined by the communications link being employed, for exarnple, 10K BPS in a noisy environment such as 15 for power lines. in the currently preferred embodiment, the cells do not have crystal oscillators but rather rely upon RC
oscillators. The iatter are not particularly stable and frequency variations occur both with temperature and as a result of processing variations. Moreover, there is no synchronization 20 provided between cells, thus, each cell must provide synchronization to the incoming data in order to properly read the data. One feature of all cells is that they detect and store the , ' frequency of the incoming data and when acknowledging a packet they can transmit at the frequency that the original packet was transmitted. This reduces the burden on cells to synchronize when they are receiving an acknowledgement packet.
Refarring to Figure 23 during the hunt mode, an l/O
subsection is hunting for data. During this mode, the rate multiplier provides a frequency (fO) to the counter 179 and a number is loaded into register 183 from the MBUS. Matches occur and are detected by comparator 182 at a frequency corresponding 10 to the expected incoming data rate. Specifically, the terminal count of counter 179 is synchronized to the transitions. As indicated by the dotted line 201, the processor continually searches for transitions from the transition detectors 171 and - 172 of Figure 17. When transitions occur, the processor 15 determines whether the transitions occurred before or after the terminal count and then adjusts the frequency (fO) until the terminal count occurs at the same time that the transitions are detected. This frequency is the shifting rate for the shift register 206. (The steps performed by the processor are shown in 20 Figure 23 as blocks 210 and 211.) The number loaded into register 183 provides a phase shift between the time at which transitions occur and the ideal time to shift data in the register 206. This prevents the shifting of data during transitions. Note counter 179 is reloaded (e.g., all zeroes) each time it reaches a terminal count.
When bit synchronization occurs, rate needed for the 5 synchronization (16 bit word) is stored within the processor memory and used to set the transmit frequency when acknowledging the packet for which the rate was developed. This stored bit rate as discussed later is used in the contention back-off algorithm allowing slot periods (M) to be matched to the last 10 received bit rate.
The comparator output is used as a shift rate for a six bit shift register 206. During the hunt mode, the data from Pin B is continually shifted through register 206. The preamble to a packet as shown in Figure 9 (010101-bit synch) is shifted along 15 the shift register 206 and the shifting rate adjusted so that synchronization/lock occurs. When the packet beginning flag appears (nibble synch-101010) the last two stages of the register 206 will contain ones and this will be detected by the AND gate 207. A binary one at the output of gate 207 ends the 20 hunt mode and provides the nibble synchronization. When this occurs, the data is clocked out of the shift register (6 bits) into a data latch 235 and from there the data can be clocked into the ', - ~' '' " ' ' , ' ' ~, -. ' :, ' ~ 3~6~7 ~
processor and converted into 4 bit nibbles. Another circuit means is present to detect all zeroes in the shift register 206. When this occurs, the processor and shift register return to the hunt mode. The number loaded into register 183 provides a phase shift 5 between the time at which transitions occur and the ideal time to shift data in and out of the register 206. This prevents the shifting of data during transitions.
Data which is to be transmitted is transferred into the data register 205. (Note only 6 bits representing a four bit nibble are 10 transferred into the data register 205.) These 6 bits are then transferred into the shift register 206 and shifted out at the shift rate. As mentioned, if the packet being shifted out represents an acknowledgement, the shift rate corresponds to the rate of the incoming data. If the outgoing packet on the other 15 hand is being sent to several cells, the shift rate is the nominal shift rate for the transmitting cell.
(Note that in Figure 23, data is shown leaving the register to only Pin A. For differential modes, the complement of Pin A is driven onto Pin B - and other variations are possible.) :' G. UO REGISTERS AND RESOURCE SHARING
Each l/O subsection has a number of registers which have bidirectional connections to the MBUS. These registers are in the l/O subsections 107, 108, 109 and 110 of Figure 12. The reading 5 and writing of these registers under processor program control configures the l/O subsystems for proper operation. Figure 12 illustrates th~ four l/O subsections 107, 108, 109 and 110 and shows the connections to the low eight bits of the MBUS and the low six bits of ADBUS. Two ADBUS bits select one of the four l/O
10 units and the remaining four bits are decoded to select one of the l/O control and status registers (described below) of that subsection. There are two lines from the PLA 136 of Figure 11 to control the action of the l/O subsections. One line is "Read" and the other line is "Write". When appropriate these lines are active 15 on phase 3 of the clock cycles.
The l/O registers, functions and bit definitions are described below:
WRITE REGISTERS: (Controlled by the "Write" line).
20 Event 0 Configuration Register:register, masking, 185 Figure 19:
Bit 0: Upon event Toggle pin A
Bit 1: Upon event Toggle pin B
Bit 2: Upon event Latch 8 bit count Bit 3: Upon event close Ramp switch (momentary on) Bit 4: Upon event Load 8 bit counter Bits5-7: Input Multiplexer: MUX 190, Figure 19.
000 Transition on pin A
0 01 Transition on pin B
0 10 Terminal Count event 01 1 Count Compare event 1 0 0 Ramp start event 1 01 Pin B compare event 10 Event 1 Configuration Register: masking register 186,Figure 19;
Bit 0: Upon event Toggle pin A
Bit 1: Upon event Toggle pin B
Bit 2: Upon event Latch 8 bit count Bit 3: Upon event close Ramp switch (momentary on) Bit 4: Upon event Load 8 bit counter Bits5-7: Input Multiplexer: MUX 191, Figure 19 0 0 0 Transition on pin A
0 01 Transition on pin B
01 û Terminal Count event 011 Count Compare event 10 0 Ramp start event 1 01 Pin B compare event I/O REGISTERS AND RESOURCE SHARING
8 Bit Counter Load Register: Counter load register 180;
Figure 18 Bits 0-7 = count . 30 Write Communications Data Out REgister: data register 205, Figure 23;
Bits 0-7 - data .
Write Communications Configuration Register: (not shown) 36 (loaded from MBUS) Used to configure the communications subsys~em for ., "-............. .. .
, , 1 32627~
transmii and receive functions.
Bit 0: 0 = Receive, 1 = Transmit Bit 1: NOP
B it 2: NOP
Bit 3: Shift Register enable Bit 4: Enter Hunt Mode Bit 5: NOP
Blt 6: NOP
Bit 7: NOP
Output Configuration Register 0: (not shown) (loaded from MBUS) Used for setting analog and digital pin configurations.
Bit 0: Enable pin A analog sut Bit 1: Enable pin A digital out Bit 2: Enable pin A pullup Bit 3: Enable pin A pulldown Bit 4: Enable pin B inversion Bit 5: Enable pin B digital out Bit 6: Enable pin B pullup Bit 7: Enable pin B pulldown Output Configuration Register 1: (now shown) (loaded from MBUS) Used for enable and compare functions.
Bit 0: Enable 8 bit counter Bit 1: Compare pin B to TTL reference Bit 2: Compare pin B to adjustable D.C reference Bit 3: Compare pin B to Ramp voltage Bit 4: Compare pin B to pin A
Bit 5: Enable RS-485 driver Bit 6: Enable input hysteresis on pin A
Bit 7: Enable input hysteresis on pin B
Output Configuration Register 2: (not shown) (loaded from MBUS) Used for setting pin logic levels.
Bit 0: Execute, load 8 bit counter with value in 8 bit Counter Load Register .
- ` 1 326275 Bit 1: Set pin A to logic level 1 Bit 2: Set pin A to logic level 0 Bit 3: Set pin B to lo~ic level 1 Bit 4: Set pin B to logic level 0 Lower Half of Rate Multiplier Register: rate multiplier 178, Figure 18 Lower by~e of rate multiplier 10 Upper Half of Rate Multiplier Register: rate multiplier 178, Figure 1 8 8 Bit Compare Load Register: compare load register 183 Figure 18 Byte for comparison RFAD REGISTERS: (controlled by "Read" line);
Read Event FIFO: FIFO 199, Figure 19 Bit 0: 0=Event 1 occurred 1 =Event 0 occurred Bit 1: Pin A level during occurrence of event Bit 2: Pin B level during occurrence of event Read l/O Condition Register:
I/O Status:
Bit 0: Input pin A
. Bit 1: Input pin B
Bit 2: 1=ramp compare Bit 3: NOP
Bit 4: NOP
Bit 5: 1=FIFO has data 0-FIFO empty .. 8 Bit Counter Latch: register 181, Figure 18 Count Byte . .
.:
~ 326~75 Communications Data Register; data latch 235, Figure 23 Data Byte Communications Status Register: (not shown) (reads onto MBUS) Bit 0: Receive mode: 1 =data available in shift register Transmit mode: O=transmit latch ready Bit 1: 1=in Hunt Mode from Fi~ure 23 .
, . ~ .
1 32627~
RESOURCE SHARING:
In the presently preferred embodiment there are five resources shared among the processors. They are the EEPROM and the four l/O
5 subsections. A hardware "Semaphore Register" (SR) and five words in RAM are used in controlling resource sharing. Figure 30 illustrates how the multiprocessors share common resources. The SR 95 of Figure 12 reads and writes to bit 0 of the MBUS.
Each RAM word will contain one state: Idle, Proc.#1, Proc.#2, 10 Proc. #3 or Proc. #4. A processor may interrogate a RAM location before assignment of resource to see if a resource is busy. If the resource is not assigned it will then access the Semaphore Register as described below. (Alternately, a processor may, skip the initial RAM
interrogation step and check the RAM location after it has accessed 5 the Semaphore Register). If the resource already busy the processor must clear the Semaphore Register to "0" and wait to try again. If the resource is "Idle" the processor assigns a resource by changing the state of the RAM Register from "Idle" to "Proc.#xN and then clearing the Semaphore Register to "0". When the processor is finished with 20 the resource, clears the RAM location to "Idle".
The SR is a one bit hardware register. During phase 3 of its respective cycle, if requiredj each processor may access the SR. In time sequence, this means that the processors may access the SR 295 s~
, once on one of four successive clock cycles (e.g., phases). The SR 295 is normally set to "0". In Figure 30, processors #1 and #3 are not requesting use of the SR 295 . Processor #2 is shown accessing the SR. If it receives a "0" at the besinning of the cycle it knows nothing 5 is being currently assigned or cleared and it se~s the appropriate RAM
location and if it contains "Idle" the processor inserts its "Proc. # thus assigning the resource and then "clears" the SR to "0". if the processor found that another processor was using the shared resource it does not assign its Proc. # and it then Nclears" the SR to "0". In this event it 10 must wait and try again.
Some operations such as those on the EEPROM may take many clock cycles so the processor should "assign" the RAM register but release the SR 295 while it is using the shared resource. When the processor is through with its operation using the assigned RAM
15 location it accesses the SR again until it finds a "0". It then "clears"
the RAM location to "idle" and "clears" the SR 295 to "on. Whenever a processor accesses the SR 295 and finds a "1" it leaves the SR 295 in the H1" state and must wait to try again.
In the example in Figure 30 Processor #4 is shown as needing a 20 shared resource. It interrogates the SR to find out if it is free. The processor uses a "test&set" operation and since the SR 295 was already H1" the test & set operation leaves the register with a "1". It . ' ~, , 1 32~275 must now wait and try again. It will keep trying until it gets access to the SR 295 and it finds the resource in the RAM word is ~idle".
V. PROTOCOL
A. CONTENTION IN GENERAL
In a typical application the communications network among ; the cells is lightly loaded and the cells will experience little or no contention delay. In the case of heavy traffic, the network can saturate. A heavy load will generate collisions and hence require - retransmissions. If retransmissions continue to collide, the network can possibly saturate. The contention backoff algorithm used in the network quickly spreads the traffic over a longer time period so that the system can recover from saturation. If the 1~ traffic is not spread over a long time period, the system will be unstable; it will not recover from saturation.
Access to a subchannel under contention conditions is regulated by two mechanisms, deferring and backing off.
Deferring is a collision avoidance technique used in group acknowledgements. Backing off is a traffic or load leveling technique.
~ .
1 ~
: ; .
r Deferring consists of counting free slots. When the number of free slots that the cell has seen equals the defer count, the cell transmits its packet in the next available slot.
When backing off, the cell increases its waiting time before attempting to retransmit a packet that has suffered a collision.
The amount of this increase is a function of the number of collisions or retransmissions. The algorithm implementing this function is called the backoff or contention algorithm.
The network uses a carrier sense multiple access method of 10 resolving contention for the communications channel. When a cell is ready to transmit it first listens to the communications channel. If it hears another cell transmitting, it waits for a clear channel. Once it detects a clear channel, a cell may delay before transmitting. The method of determining that delay is 15 deterrnined by the contention algorithm.
Time on the channel is measured in slots, each slot being M
bits at the most recently detected receive baud rate (i.e., shift rate). When a cell delays before transmitting, it waits an integral number of slots. When a cell detects a clear channel, it 20 may delay and then when it is ready to transmit, it attempts to transmit on a slot boundary. If a cell is transmitting a packet that has suffered a collision, it delays a time period determined 1 326~7~
by the backoff algorithm. Backoff delay is randomized uniformly over N slots, N is adjusted by the backoff algorithm. Its smallest value is 2 and it is adjusted upward by the backoff algorithm before each retransmission of a packet. Its maximum value is 5 210.
B. GROUP ACKNOWLEC~EMENT PACKET CONTENTION
A packet from a group announcer to a set of group listeners will cause each of those listeners to send an acknowledgement to 10 the announcer. Without a method of arbitrating contention among those acknowledgements, they will always collide. To avoid this problem, a built in reservation system for group acknowledgements is used. A listener cell uses its group member number to determine which slot to use for its acknowledgement.
15 Group member 5 will transmit its acknowledgement in the 5th free slot following reception of the original packet. The result is - that group member 1 will transmit its acknowledgement in the first slot following the original packet. Group member two will transmit its acknowledgement in the first slot following first 20 group member's acknowledgement. This process continues until the last group member has replied to the originai packet. If a group member does not reply and thus leaves its reply slot empty, the next group member replies in the next slot.
The contention and l/O state diagram is shown in Figure 24.
The following table sets forth the states and their descriptions.
Contention States State Name Description 10 0 Idle Time the slot boundaries while looking for receive data transitions.
8it Sync Establish baud rate synchronization with received signal.
2 Byte Sync Wait for the start of packet flag.
3 Rcv Receivethe packet.
4 IPG Delay Inter Packet Gap Delay. Delay for n bit times after the end of the last packet on the subchannel (whether this neuron transmitted it or received it).
5. Backoff Wait M slots where M was set by the last execution of the Delay backoff algorithm or by the ARQ protocol software.
25 6. Xmt Transmit a packet in the next slot.
7 Jam Transmit a jam pattern (all ones) for the jam period (specified in bit times). Execute the backoff - algorithm to set the backoff slot count.
,! .
; .
~ .
, Contention State Transitions State Event Action Next State 0. Idle A. Transitions Detected none 1. Bit Sync 0. Idle L. Packet to Xmt none 5. Backoff Delay 1. Bit Sync B. Sync Achieved none 2. Byte Sync 1. BitSync G. NoTransitions none 4. IPG Delay Byte Sync 2. Byte Sync F. Hunt Timeout none 1. Bit Sync 2. Byte Sync C. Starting Flag none 3. Rcv Detected ; 15 3. Rcv E. Abort Detected none 1. Bit Sync 3. Rcv D. Ending Flag Set Pckt Rcvd Flag 4. IPG Delay 3. Rcv N. PacketToo Long none 1. BitSync 4. IPG Delay M. Delay Done none 0. Idle 5. Backoff J. Delay Done none 6. Xmt 6 Delay 5. Backoff A. Transitions Detected none 1. Bit Sync :î 25 Delay 6. Xmt 1. Collision Detected Calculate Backoff ; Delay 7. Jam 6. Xmt H. Xmt Done none 0. Idle ' 30 ` 7.Jam K. Jam Done none 5. BackoffDelay .
G. COLLISION DETEt:TlON
In the curlléntly implemented embodiment collision detection is not used. Ordinary circuits can be used to provide . . . .
this feature with the cells providing responses as set forth in IEEE802.3. Upon detecting a collision, the cell can transmit a jamming signal for one slot time to make sure that all cells on the channel detect the collision. It then ceases transmitting and 5 executes the backoff algorithm. The backoff algorithm adjusts the contention randomization interval. IEEE802.3 uses the number of collisions experienced by the packet to calculate the backoff interval. The cell network may not always have collision detection so the cell's backoff algorithm may use the protocol's 10 inferred collision to calculate the backoff interval. If the cell has collision detection, it detects a collision in the same slot in which it occurs and retries the transmission (after the backoff interval) .
For cells without collision detection where a collision 15 occurs, the cell discovers it when the protocol timeout period expires. If a cell is sending a packet to multiple destinations (the normal case), it infers a collision if at the end of the protocol timeout period, no replies have been received from any of the destinations. If even one reply is received, there was no collision 20 at the transmit point and the retransmission takes place without an increased delay due to backoff. The cell then executes the backoff algorithm just as it does with collision detection, using the inferred collision count. After the backoff interval, the cell transmits the packet.
Therefore, the difference between collision dstection and collision inference is in the length of time it takes the cell to discover that a collision has occurred.
D. BACKOFF ALGORITHM
The backoff algorithm used in the currently preferred embodiment is set forth in IEEE802.3 standard, a truncated binary exponential backoff. The backoff interval is an exponential function of the number of collisions (detailed or inferred) since the last successful transmission. An exponential backoff algorithm gives the system the stability it needs to recover from ` saturation conditions. By exponentially spreading out the load in a saturated system, the algorithm allows the system to recover.
Backoff interval in slots = R such that R = random number linearly distributed over the interval:
0 <R<2 EXP [min (10, n)]
where n . number of collisions.
When a cell has two transceivers attached, it transmits every packet via both transceivers. Since the transceivers access different subchannels, they will experience different load conditions. Each transceiver is treated as a separate subchannel and has its own backoff parameters (collision count and backoff interval). The backoff parameters are Nkept" by the cells, one set for aach transmission.
The random number for the backoff algorithm is generated by one of two methods: I. by a pseudorandom number generation algorithm seeded with the 48 bit cell ID (guaranteed to be unique d~ as discussed), 2. by running a counter and saving the low order bits when an external event is detected.
The slots are equal in durations to bit rate of the last received data. Note: if each cell used its internal bit rate, slot ` durations would vary from cell-to-cell.
E. CONTENTION TIMER
Packets that have multiple routes to a destination may experience a long contention delay via on0 route and a shorter delay while traveling simultaneously via another route. If that contention delay is allowed to be too long, the later packet could arrive after the destination's receive sequence number has cycled back to the same sequence number in the packet. A packet could .~ 20 thus arrive out of sequence without the ARQ protocol detecting it.
To prevent this type of error, each packet uses the contention timer field (Figure 6) that is decremented by the number of slots . . . .
.
1 32627~
that the packet has waited for contention at each hop in a multihop route. When the count reaches zero, the packet is discarded.
F. ARQ PROTOCOL
The cell uses a sliding window protocol with a window size of 1 and modulo 2 sequence numbering (equivalent to a stop and wait protocol). The link control mechanism is very similar to th~
H[)LC asynchronous balanced mode. The principal difference being that with 1 bit sequence numbering instead of acknowledging packets with the poll/final bit set, every information packet must have an acknowledgement.
Before the ARQ mechanism can work, a connection must be established between the two communicating devices (cell or ~; network control devices). The connection process is described in the "connection" section later in this application. The ARQ
mechanism only operates when the cell is in the connect state.
- The ARQ states may be considered as substates of the connect state.
When a cell transmits a message, it waits for a reply from . 20 the destination. If the cell does not receive an acknowledgement within a predefined time out period, it assumes that the message was iost and it transmits the message again.
,~
,~ .
1 32~27~
Two types of packet may be used to carry an acknowledgement, an acknowledgement-only packet or an information packet. The acknowledgement is carried in the receive sequence number of the packet. The acknowledgement-5 only packet has no message field and is identified by the ACKcommand in the link command field. An information packet does contain a message field and is identified by the INFO command in the link command field.
Figure 25 is the link level ARQ state diagram and along with 10 the following table, defines the various ARQ states.
- Stato Event Aotion Next Stet0 . 0. Idle Message to Send Build Packet 1. Idle 0. Idle Packet to Transmit Send Packet 1. Contontion 15 0. Idle Packet Received Process Packet 1. Idle !l 1. Contention Packet Transmitted Start Timer 2. Wait ACK
2. Wait ACK Timeout Stop Timer Build Packet 2. Wait ACK
2. Wait ACK Packet to Retransmit Retransmit Packet 1. Contention :: 2. Wait ACK ACK pckt Received or N Stop Timer 0. Idle retries 2. Wait ACK Non ACK pckt Received Process Packet 2. Wait ACK
A cell must store a transmit sequence number for each addressee with whom it communicates. An addressee can be a cell, a group, or a control device. For receiving, a cell must save .
1 326~75 the receive sequence number of each source from which it receives. A source can be a cell, a group, or a control device.
When a cell receives a message, it checks the CRC on the message. If the CRC is not valid, the cell does not reply to the 5 message. The cell receiving a message also checks the message's sequence number. If the sequence number indicates that this is a duplicate packet, the cell acknowledges the receipt of the packet to the sender but does not pass the packet to the application software.
The ARQ protocol uses a bit that means Nthis is a retransmission by the sender". A receiver will not acknowledge a duplicate message unless the message has its retransmit bit on.
The cell saves the sequence number for the last received message for each group for which it is a listener. It has a separate 1 bit 15 transmit sequence number and 1 bit receive sequence number for messages addressed with the cell address (used when communicating with control devices).
(:ell to cell communications is via group addresses.
; Direct addressing with cell addresses is used for network 20 control functions. The cell will be communicating with a grouping device or network controller in those cases. A cell can have only one conversation at a given time that uses cell ., addresses because it has provisions to store only one set of those sequence numbers.
; When a control device wishes to communicate with a cell, it opens communications by sending a packet with a connect 5 command in the link control field. That command initializes the sequence numbers. After receipt of that command, the cell will not accept messages addressed to it (via cell address) by ~ another control device until the conversation ends. The -- conversation ends when the control device sends the cell a 10 disconnect command.
:
The period of time that the cell waits for an ,' acknowledgement of a message depends on the type of routing used. In general, the cell allows enough time for the packet to . arrive at its destination, plus protocol processing time in the 15 destination cell and the transit time for the return packet carrying the acknowiedgement.
The protocol timeout period for multihop packets is also influenced by the collision count. Even in very noisy environments, it is more likely that the reason a packet failed to 20 reach its destination in time is due to a contention rather than a transmission error. When a packet is retried, it is assumed that the collision count is an indication of system load and the - , ' . ' ' .
1 326~75 expected contention delay for a multihop packet. The delay period for multihop packets is adjusted upward as a function of collision count. The timeout period is therefore a function of the transmission baud rate, the number of hops and the collision count.
G. LINK CONTROL COMMANDS
; Link control commands control the operation of the ARQ protocol and the link connection process (see next section). The link command field of a packet always contains a link command.
ARQ Protoçol Commands INFO Information Packet (requires acknowledgement) ACK Acknowledgement Only Packet (does not require -~ acknowledgement) Connection Control Commands COI~N Connect DISC Disconnect . Sl Set Initialization ; 20 ~D Exchange Network ûata - Reelies to Connection Control Commands CMDR Command reject ~ 25 RD Request Disconnect -` Rl Request Initialization UA Unnumbered Acknowledge . .
.
. , .
~ 326275 - Only packets with the ACK and INFO commands use sequence numbering. Th~
INFO packets have two sequence numbers, a transmit sequence number and the sequence number of the last packet received. ACK packets have both sequence number fields but th~ transmit sequence numb~r is ignored by the 5 destination.
Packets with commands other than ACK or INFO are called unnumbered packets. Unnumbered packets are acknowledged in a stop and wait fashion via a UA command. Unnumbered packets do not contain a message field.
H. CONNECTION CONTROL
Before a control device can communicate with a cell, it must establish a connection with the cell. Establishing a connection consists of initializing the sequence numbers and putting the control device and cell into a known state. The connection establishment and maintenance procedures are governed by state machines implemented in software.
1~ An announcer cell must establish a connection with each listener cell in its group. Only when the connections have been established may the announcer communicate with the listeners. Connections are controlled by a subset of the link control commands. Commands are issued by a primary station. A secondary station receives a command and sends a reply to the 20 primary. In a group, the primary station is the announcer. The listeners are secondaries. When a network control device communicates with a cell, tha control device is the primary, the cell is the secondary. The link -.
1 32627~
control commands and their responses are shown below. The INFO and ACKcommands are ARQ protocol commands; the rest are connection control - commands.
Primary Secondary Description Command Response INFO Information: valld only In connect state.
INFO Information: valid only In connect ~tate.
ACK Acknowled~ement: use sequence numbers in packet but do not update receive sequence number.
CMDR Command relect: sent only by Secondary in Connect State. Rebuild pckt and send It a~ain.
R I Reque~t Initiallzation: Init ~econdary.
disconnect secondary.
RD Request Dlsconnect: disconnect the seGondary.
DM Secondary Is In the Dlsconnect state ACK Acknowled~ement ` CMDR Command reject: sent only by secondary in connect state. Rebuild pckt and send It a~ain.
R I Request Inltializatlon: inlt secondary.
disconnect secondary. Connect secondary.
DM Disconnect Mode: Secondary is In the disconnect ?, state.
CONN Connect UA Unnumbered ACK:
CMDR Command reJect: sent only by Secondary In connect state retry CONN:
R I Request Inltlallzatlon: inlt secondary.
disconnect secondary connect secondary.
~- RD Request disconnect: send DISC.
DISC Disconnect UA Unnumbered ACK
CMDR Command reject: sent only by secondary in connect state. Retry DISC.
~ 326~7~
S I Set Inl1ializatisn CMDR Command reJec1: Sent only by -~ocondary In Connec1 State. Retry Sl.
UA Unnumbered ACK.
XND Exchan~e ID & Network data: Thi~ command is sent only in when the primary is In the disconnect state.
XND Exchan~ie ID & Network data: The secondary sends an XND response only If It is In the disconnect Qtate. If it receives an XND while in any other ~tate, the secondary responds wlth CMDR.
CMDR Command reject: sent only by secondary in conn~c1 state. Disconnec1 secondary; then try XND a~ain.
Tho connection state diagrams of Figures 26 and 27 refer to primary and secondary stations. The primary station controls the connection. The secondary can request that the state of the 20 connection change but the secondary cannot change the connection unless commanded to do so by the primary station.
PRIMARY STATION CONNECTION STATES
25 State Event Actlon Next State 0. Start Power Up Inltiallze 4. Walt Init q 1. Disconnect Connect Request Send CONN 2. Wait Connect 30 1. Disconnect Fatal Error or Rl Send Sl 4. Wait Init 1. Disconnect XND Process XND 1. Disconnect 1. Disconnect INFO, ACK Retry DISC 1. Dlsconnect 1. Disconnect UA, DM l~nore 1. Dlsconnect 1. Disconnect RD, CMDR Retry DISC 1. Dlsconnect 2. Wait Connect UA Reset Seq Nums 3. Connect 2. Wait Connect Fatal Error or Rl Send Sl 4. Wait Inlt ` 2. Walt Connect Nonfatal error, RD, or CMDR Send DISC 5. Wait Disc.
;
' `
1 32627~
2. Walt connecl INFO, ACK Send DISC 5. Walt Dlsc.
2. Wait Connect D M Re1ry CONN 3. Wait Conn0ct 2. Walt Connect ~ND S~nd DISC 5. Wait Dlsc.
2. Wal1 Connect Time out Re1ry CONN 2. Walt Connec1 3. Connect Fatal Error or Rl Send Sl 4. Wai~ Init.
3. Connec1 Nonfatal orror, RD, or disc. Send DISC 5. Wait Dlsc.
1 0 request 3. Connect DM Send DISC 1. Disconnec1 3. Connect CMDR, INFO,ACK ARQ Processin~ 3. Connect 3. Connec1 XND Send DISC 5. Walt Dlsc.
3. Connect UA Send DISC 5. Wait Disc.
4. Wait Inlt UA received Send DISC 5. Walt Dlsc.
4. Walt Inlt CMDR received Retry Sl 4. Wait Inlt 4. Walt Init INFO, ACK Retry Sl 4. Walt Inlt 4. Walt Init RD, DM,RI,XND Retry Sl 4. Wait Inlt 4. Wait Inlt Tlme out Re~ry Sl 4. Walt Inlt 5. Walt disc UA, DM 1. Disconnect 5. Wait dlsc Rl Send Sl 4. Walt Init 5. Wai1 dlsc Fa1al error Send Sl 4. Walt Inlt 5. Walt dlsc CMDR,RD,XND Retry DIS C 5. Walt Dlsc.
5. Walt D~sc INFO, ACK Retry DIS C 5. Walt Dlsc.
5. WaJt Disc Tlme out Re1ry DISC 5. Walt Disc.
SECONDARY STATION CONNECTION STATES
State Event Actlon Next State 0 Start Power Up Inltlallzatlon 3. Inltlallze 1. Dlsconnect CONN received Send UA 2. Connect 1. Dlsconnect Sl recelved Initlallzatlon 3. Inl~lallze Send UA
1. Dlsconnect Fatal Error Send Rl 4. Walt Inlt.
1. Dlsconnect XND Send XND 1. Disconnect 1. Dlsconnect INFO, ACK Retry DM 1. Dlsconnect 1. Disconnect DIS C Retry DM 1. Disconnect 2. Connect Sl received ` Initialization 3. Inltialize Send UA
2. Connect DIS C received Send UA 1. Disconnect -- t 326275 2. Connect Fatal Error Send Rl 4. Wail Inil.
2. Connect Nonfatal error Send RD 5. error 2. Connect INFO, ACK ARa Processln~ 2. Connect 2. Connect CONN Retry UA 2. Connect 2. Connect XND Send RD 5. Error 3. Initialize DISC received Send UA 1. Disconnect 3. Initlalize INFO ACK CONN Retry Rl 3. Inltlallze 3. Initialize S I Re1ry UA 3. Initlalize 3. Initialize XND Retry RD 3. Initialize 4. Walt Init. Sl received Initlalizatlon 3. Initialize Send UA
4. Wait Init INFO ACK Retry Rl 4. Wait Inlt 4. Wa~t Init DIS CXND CONN Retry Rl 4. Wait Init j 5. Error DISC received Send UA 1. Dlsconnect 5. Error Sl received Inltializatlon 3. Initiallze Send UA
5. Error INFO ACK Retry RD S. Error ; CONN XND
25 NOTE: Retries: A reply may be retried N times. The event that causes retry N+1 is defined to be a fatal error and causss initialization. The cell maintains one retry count and it is incremented when any reply other than INFO or ACK is retried. The retry count is cleared whenever a non-retry reply is sent to the - 30 primary cell.
I. ABORT SEQUENCE
A cell transmitting a packet can abort the packet by 35 transmitting an abort sequence instead of continuing to transmit 1 3~6275 th0 packet. The Abort sequence is a group of at least 12 ones transmitted in succession. A receiving cell identifies an abort from the code verifier of Figure 16. A receiving packet ~reats any 3 of 6 code violation as an abort. One result of this is that a link 5 idle condition results in an abort. If the link is idle (no transitions) for more than a bit time, the result is a code violation. When a cell receiving a packet detects an abort sequence, it discards the portion of the packet that it has clocked in and begins searching for a new packet preamble. The abort 10 sequence is also used for jamming after a collision is detected.
J. SYSTEM ID
Referring to Figure 29, themethod by which the 48 bit system ID is used within the packets is illustrated. Thirty-two bits of the system ID shown as field 251 is placed directly into 15 the packet as indicated by the field 255. The remaining 16 bits are used in the calculation of the packet CRC. Initially, the CRC
register begins with all ones as indicated by the field 252 at the start of the CRC calculation. Then the 16 bit field 250 of the - system ID is used in the CRC calculation to provide a 16 bit field 20 253. The field 253 is stored in the EEPROM and used as a preset CRC field ea ch time a packet CRC is calculated.
, ~
- . .
- . .
.
When a packet is to be transmitted once the preset field is stored, the stored CRC field is coupled to the CRC register. The 16 bit packet CRC field is calculated using this present field and hte other fields in the packet used to calculate the packet CRC. (All 5 fields except the contention timer field are used.) The other 32 bits of the system ID are transmitted within the packet.
; When a packet is received, the processor calculates a CRC
; for the received packet by first placing its stored CRC preset field o in its CRC register and then computing the packet CRC (again, the contention timer field is not uséd). If tha newly computed CRC
field does not match the field in the packet, it is assumed that the packet has been improperly transmitted or that the transmitted packet, if correct received, has a different system ID and thus should be discarded.
Vl. GROUPING DEVICE
The grouping device can take various forms and can be - realized with commercially available hardware such as a personal computer. These computers can be readily programmed to perform the various functions described in the application performed by the grouping device. For example, they can be readily programmed to provide the packets needed to communicate with the cells for grouping. Other functions such as the generation of the random 1 326~7~
number used within the packets can be generated with well-known programs.
: An Apple ll computer, for instance, may be used as a grouping device. The 48 bit system ID may be stored on a disk; or, a printed circuit card may be provided which engages one of the slots of the Apple ll computer, the card can contain the system ID
; which is taken from a cell such as cell 232 of Figure 28. As groups are formed, the assigned group numbers, member numbers, etc., can be stored on the disk or stored in an EEPROM on a card.
In Figure 28, the elements of a presently preferred grouping device are illustrated. They include a CPU 226 which may be an ordinary microprocessor. The CPU communicates with a memory which may comprise a RAM 227, ROM 228 and storage means 229 for storing the system ID. Where a floppy disk is used the system ID and program (otherwise stored in ROM 228 ) are stored on the disk, with the program being transferred to RAM for execution.
- A display means 230 such as a ordinary monitor is coupled to the CPU to provide a display to the user, for instance, the display can be used to provide lists of the groups with their ASCII
- 20 names. A keyboard 231 is used to allow commands to be entered into the CPU.
.
. . .
t 32627~
Ths CPU is shown coupled to a cell 232 with the cell being coupled to a network through transceiver 233. The cell 232 is part of the grouping devices and the cell's ID is used by the grouping devices as a system ID. Typical messages transmitted by 5 the computer to the cell are shown in Appendix B, for example, the message of assigning the destination cell to be an announcer in a designated group is a message generated by the grouping device.
The grouping device can comrnunicate directly with the call over one of the three pairs of leads which are coupled to the l/O
10 subsections or through the select pin which allows messages from the CPU 226 to be read to the fourth l/O subsection.
.~ _ Thus, a network for sensing, communicating and controlling which has distributed intelligence has been described. While in 15 this application a simple example of use of cells in a home environment has been described, it will be obvious to one skilled in the art that the disclosed invention may be used in numerous other applications. Appendix C to this application contains a list of some other applications in which the present invention may be 20 used.
1 326~75 Appendix A, Packet Examples Routing Types for Packet Examples Fully Addressed 2 Open Flooding 3 Restricted Flooding 4 Group Flooding NOTE: The packet sizes are in cel! memory bits (before 3-of-6 encoding). A packet on a communications subchannel, after conversion to 3 of 6 code, is 50% larger.
Single Hop Packet Format:
Preamble, 16 bits Flag, 4 bits Destination cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 1 (Fully Addressed) Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits ' .
1 3~6~75 Single Hop Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Destination Cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 1 (Fully Addressed) Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits l~l 1 3~6~75 Multihop Full Address Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Next Cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits s 1 (Fully Addressed) Cell Address List Address Count, 4 bits Addresses, 48 - 768 bits Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits 1'(~
.
. . , ;
1 3~6?7~) Multihop Full Address Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Destination Cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits ~ 1 (Fully Addressed) Cell Address List Address Count, 4 bits Addresses, 48 - 768 bits Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits :
- ~ .
1 326~75 Open Flooding Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 2 (Open Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 32 bits Flag, 4 bits 1 326~75 Open Flooding Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = Ail Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits= 2 (Open Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits .
':
..
1 32627~
Restricted Flooding Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits .
~.
.
.
1 32627~) Restricted Flooding Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits , 1~
1 32627~
Group Announcement Packet Format:
Preamble, 16 bits Flag, 4 bits System I D, 32 bits Group Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits s 4 (Group Flooding) Source Member Number, 8 bits Destination Member Number, 8 bits, (O = broadcast) Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits 1~
Group Announcement Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Group Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 4 (Group Flooding) Source Member Number, 8 bits Destination Member Number, 8 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits ~-` 1 326~75 Probe Packet Format:
Preamble, 16 bits Flag, 4 bits System iD, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message, 49 to 769 bits Message Type, 8 bits Message Contents, 48 to 768 bits (Route List) Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits I'~ O
Probe - Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit : Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message Field, ^~ Message Type 8 bits Message contents, Route List Encryption Check, 16 bits :: CRC, 16 bits ~ Flag, 4 bits 1~1 t 326275 Broadcast Command Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits ~ 3 (Restricted Flooding) or 2 (Open Flooding) Source Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits Broadcast Command Reply Format:
NO REPLY
, Appendix B Message Types "
:`
Probe Function: Determine the best route from the announcer to the listener.
Source: Group Announcer Address Type: Cell Routing Method: Restricted Flooding Message Type: 2 (Number for 8 bit field) Message Content: Address Count (1 byte), (number of cell IDs in probe packet - this is the number of cells ;' rebroadcasted packet) Address List ., Probe Result ~ Function: report the address list in the first probe packet received by ~ the destination Cell.
-/~ Source: Cell previously addressed by a Probe message.
. Address Type: Cell Routing Method: Restricted Flooding . Message Type: 3 Message Content: Address Count t1 byte), Address List Assign Group Announcer Function: Assign the destination Cell to be an announcer in the designated group.
Source: Grouping Device Destination: Cell . Address Type: Cell or Group Member ;. Routing Method: Restricted Flooding or Group Flooding ' Message Type: 4 - Message Content: Group Number, Member Number : Deassign Group Announcer Function: Deassign the destination Cell from serving as an announcer in ' the designated group.
Source: Grouping Device : 153 ., .
~.- ' ' ' :
,, .
, ~ ` 1 32627~
Destination: Announcer Cell Address Type: Cell or Group Member Routing Method: Restricted Flooding or Group Flooding Message Type: 5 Message Content: none Assign Group Listener Function: Assign the destination Cell to be a listener in the destinated ~ group.
: Source: Grouping Device . Destination: Cell Address Type: Cell or Group Member Routing Method: Restricted Flooding or Group Flooding Message Type: 6 Messags Content: Group Number, Member Number Deassign Group Listener Function: Deassign the destination Cell from serving as a listener in the , designated group.
Source: Grouping Device Destination: Listener Cell , Address Type: Cell or Group Member , Routing Method: Restricted Flooding or Group Flooding Message Type: 7 Message Content: none Assign Group Repeater Function: Assign the destination Cell to be a repeater in the designated group.
Source: Grouping Device -, Destination: Cell .~ Address Type: Cell or Group Member ~ Routing Method: Restricted Flooding or Group Flooding .~ Message Type: 8 . Message Content: Group Number, Member Number Deassign Group Repeater Function: Deassign the destination Cell from serving as a repeater in the designated group.
Source: Grouping Device Destination: Group Repeater Cell Address Type: Cell or Group Member Routing Method: Restricted Flooding or Group Flooding /
.. . . '' f.- .
- ~ , Message Type: 9 Message Content: none Assign Repeater Function: Assign a Cell to act as a repeater. Used to assign Cells that are not normally allowed to be a repeater, i.e. a Cell with one transceiver on a nonradiated medium.
Source: Control device Destination: Cell Address Type: Cell Routing Method: Fully Addressed, Open Flooding, Restricted Flooding Message Type: 10 Message Content: none Shutup Function: Broadcast message telling all Cells to stop transmitting until commanded to resume.
Source: Control Device Destination: Cells Address Type: Broadcast or Cell Routing Method: Restricted Flooding or Open Flooding Message Type: 11 Message Content: none Report your Input Function: Command a Cell to report its input.
Source: Cell or Control Device Destination: Cell Address Type: Any Routing Method: Any Message Type: 12 Message Content: Input number (byte).
Report your Output Function: Command a Cell to report its output.
Source: Control Device or Cell Destination: Cell : Address Type: Any Routing Method: Any -; Message Type: 13 Message Content: Output number (byte).
Download Function: Download data or code Source: Control Device Destination: Cell Address Type: Any Routing Method: Any Message Type: 14 Message Content: Address, length, code Set communciation parameter Function: Set a Communication Parameter in the Cell Source: Control Device Destination: Cell Address Type: Any Routing Method: Any Message Type: 15 Message Content: Parameter number, value . .
Announcement Function: Announce Sensor Data :: Source: Group Announcer Destination: Group : Address Type: Group, Broadcast ` Routing Method: Group Flooding Message Type: 16 Messago Content: O - 255 (one byte) . ~
' l~
. ~ .
1 326~75 APPENDIX C
APPLICATIONS
CATEGORY SUBCATEGORY APPLICATION
General Sen~ing Functions Usaga Communlc~tlon Functlons Control Functions Agrlculture Crop Management Crop Sensor/Comm Irrlgatlon Ctrl/Comm Land Leveler Sensor Comm Pe~t Sensor/Comm (with cell IDs Identi~yln~ anlmals) LlvQstock Detector/Tracker Fsed Sens6/Ctrl/Comm Mllker Sense/Ctrl/Comm Welght Sensor/Comm Herder Slgnal Devlce Commerclal Banklng ATM Card Electronlc Mon-y Commerclal Cash R-glster Sense/Ctrl/Comm Elevator S-ns-/Ctrl/Comm Slot Machln- S-ns-/Ctrl/Comm V-ndlng Machln- Sens-/Ctrl/Comm Commerclal,Mlsc Dlaper Senaor/Comm Pag-r Ctrl/Comm Prot-chnlcs, Sensor Ctrl Stamp l D
Watch Ctrl/
Constructlon D-cay Sensor/Comm Poet S-nsor/Comm Energy Manag-ment Sensor S-nse/Comm Th-rmostat Ctrl/Comm Utlllty S-nsor/Comm V-nt Ctrl/Comm ` Securlty Lock S-nse/CtrllComm Smart K-ys (Serlal #) Communlcatlon Communlcatlons Cable Ellmlnatlon Channel Ctrl/Comm Network Con119uratlon Ctrl/Comm Cell to Anythlng Brldge Phone l D (Cell l D ) Phon- to C-ll Brldge ~5~
.
-- ~ 326275 Telemetry Ctrl/Comm Wirln~ Elimlnatlon Computsr SloW Da~a N~twork Network Archltecture Artlflcial Intelll~ence Con~l~uratlon Ctrl Copy Protectlon Parallel Processlng Nodes Perlpheral Cable Ellmlnatlon K-yboard Sense/Comm Mouso Ssnse/Comm Wlrlng Ellmlnstlon Develop System Emulator D-vlc-Consumer Appllances Ssnsor SensQ/Comm Swltch Sens-/Ctrl/Comm Consumer, Mlsc Detector/Tracker (Electronlc Serlal #) Low 3attery Detector Smart Lott9ry Tlcket Entertalnment Amusemant Park Ctrl'r Arcade Gama Ctrl'r Cable TV Access Ctrl'r Cable TV Sampb Ctrl'r CD Plsyer Ctrl'r Spaclal Ett-ct- Ctrl'r St~r-o Ctrl'r TV Ctrl'r VCR Ctrl'r Hom- Improvement Central Clook Sy-Curtaln Ctrl/Comm Door S-ns-/Comm Garag- Door Ctrl'r Intercom Intercom Ctrl'r Pool Ctrl'r SenseJCtrl/Comm Smoke/Flr- D-tector Wlndow S-ns-/Ctrl/Comm Pets D-t-ctor/Tracku (Electronlc Serlal #) P-1 Ctrl/Tralner Educatlon Educatlon, Mlsc In1-ractlv- Book Sens-/Ctrl/Comm T~st S-ns-/Comm En31neerln~ Data Acqulsltlon DAC/ADC
Instrumentatlon DAC/ADC
Swltch Sense/Ctrl/Comm Home Electrlcal Ll~ht Ctrl/Comm R0coptlcl- Sense/Comm/Ctrl 1~
---, ' . : ~ ' . ' ' ~
. .
.. . .
t 326~75 Swltch S~nse/CtrllComm All 10rms of sensln~
All forms of eontrol Energy Managemsnt Sensor Ssnse/Comm Th-rmostat Ctrl/Comm Utlllty Sen~or/Comm Von1 Ctrl/Comm Home Improvement Cgntral Clock Sys Curtaln Ctrl/Comm Door Sense/Comm Garage Door Ctrl'r Intercom Intercom Ctrl'r Pool Ctrl'r S-ns-/Ctrl/Comm Smoke/Flre Detector Wlndow Sense/Ctrl/Comm Securlty Lock S-n~e/Ctrl/Comm Smart K-y- (S-rlal #) Vlbratlon/Motlon S-nse/Comm ;` wlndow Sen~/Ctrl/Comm Sprlnkler Sys Tlmer Ctrl/Comm Valv~ Ctrl/Comm Wetn-ss Sense/Ctrl Industrlal Energy Managemsnt Sensor Sense/Comm Thermostat Ctrl/Comm - Utlllty Sensor/Comm ~`, Yent Ctrl/Comm Industrlal Equlpment 011 Drlll Sensor/Ctrl/Comm Power Load Sensa/Ctrl/Comm Utlllty Sensor/Comm Securlty Lock S-nse/Ctrl/Comm - Smart K-y- (S-rlal #) Vlbratlon/Motlon Sense/Comm Wlndow Sen~-/Ctrl/Comm S-curlty, Industrlal Copy Prot-ctlon Detector/Tracker (Electronlc Serlal #) P-r~onnel Sadg- I D
Law S-curlty, Law Copy Prot-ctlon I D Card (S-rlal #) Gun l D
PaJSport (Serlal #) Shopllft-r Detector Manufacturlng CIM Artltlclal Intelllgence Wlrlng Ellmlnatlon ,~
1~9 .
: . . ~`; -.
,~ , , . , .. ,, . . ... ~ , - 1 326~7~ --`
,, Production Ctrl Detector/Tracker (Electronic S-rial #) ~nventory Ssnse/Comm Procass Ctrl Llne Balanc-Production Automatlon Productlon Flow/Sense Robotlc~ Detector/Tracker ~EIectronlc Serial #) Robot Senne/Ctrl/Comm Medlcal Medical, Mlsc Blo-Feedbsck Blonlcs Handlcapped Intorfac-s Heart Pacer Implants Medlcal Alert Sense/Comm Medlclne Alert Sense/Comm Patlent Monltorlng Personal Dlspen~er Ctrl/Comm P-rsonal Monltors Prosthetlcs Mllltary Mllltary, Mlsc Copy Protectlon Damage Ctrl Sens-/Comm Detector/Trscker (Electronlc Serlal #) Personnel Badgs I D
Redundant Comm SDI Sense/Ctrl/Comm Sonna Buoy S-nse/Comm Spylng Sense/Ctrl/Comm Posltlon Sense/Ctrl/Comm Syst-m Dlagnostlcs Sense/Comm Wsr Gamo Monltor/Slm Wsapon S-nse/Ctrl/Comm Socurlty Lock S-ns-/CtrllComm Smart K-ys (S-rlal #) Vlbratlon/Motlon S-ns-/Comm Wlndow Sons-/Ctrl/Comm Sclentlflc W-ath-r/Earthquake/-tc s-nsor Transportatlon Automotlv- G-nsral senslng - G-neral communlcatlon Gon-ral control Antl-lock Breaklng Sys Complex Cable Ellmlnatlon Gaugo Ctrl In Dash Map/Locator Instrument Panel C~rl Llcense Plat- I D ~ Comm Llght Ctrl/Comm ' 1 (4 (~) .. . .
.
~ . , . -1 326275 ~"
, Regulator Sense/Comm Smart Keys (Serlai #) Swltch Sense/Ctrl/Comm System Diagnostlcs Sense/Comm Wirlng Ellmlnatlon Avlonlcs Antl-lock Breaklng Sys Complex Cable Ellmlnatlon Gauge Ctrl Instrument Panel Ctrl Llght Ctrl/Comm Regulator Sense/Comm Sensor Sense/Comm Swltch Sense/C~rl/Comm i~ System Dlagnostlcs Sense/Comm Wlrlng Ellmlnatlon Transportatlon, Mlsc Emergency Loca~or (ELT) Sense/Comm Trafflc Monltor/Ctrl Tr-1flc Slgnal Sense/Ctrl/Comm ~, Tpy/Hobby/Spo Gam- 3 D "Chlp Wlts" Sens-/Ctrl/Comm Blngo Card Sens~/Comm Gam- sens-/Ctrl/Comm Hobby Camera Sense/Ctrl/Comm , Hobby Klt Sense/Ctrl/Comm ~, Maglc Equlpment Sense/Ctrl/Comm .:
, Mlniatur- Traln Ctrl/Comm Remote Ctrl Sense/Ctrl/Comm Sport Emergency Locator (ELT) Sense/Comm Trap Lln~ Sensor Sport Acc-ssory S-nse/Ctrl/Comm Toy L-go Bot S-n--/Ctrl/Comm Medl- Interactlve Toy Sense/Ctrl/Comm 3 Anlmated Toy Sense/Ctrl/Comm , .
~' 22 - : .; -:: :
. : .
1. Field of the Invention The invention relates to the field of networks with distributed intelligence, configuration and control and intelligent cells used in networks, primarily where the networks are used for sensing, communicating and controlling.
2. Prior Art.
There are many commercially available products which provide sensing, control and communications in a network environment. These products range from very expensive, elaborate systems, to simple systems having little intelligence.
As will be seen, the present invention is directed towards providing a system having a relatively large amount of intelligence and computational power but at a low cost.
One commercially available system "X-10" provides control, by way of example, between a light switch and a light. When the light switch is operated, a code pattern is transmitted over the power lines to a receiver at the light. The code pattern is transmitted twice, once in its true form and once in its complementary form. When the code is received by the receiver, ` it is interpreted, and thereby used to control the light.
Mechanical addressing means are employed to allow the ., : 1 1 326~7~j TABLE OF CONTENTS
BACKGROUND OF THE INVENTION
FIELD OF THE INVENTION
SUMMARY OF THE INVENTION ............................. 3 BRIEF DESCRIPTION OF THE DRAWINGS .................... 6 DETAILED DESCRIPTION OF THE INVENTION ................ 9 OVERVIEW OF AN APPLICATION OF THE PRESENT INVENTION .. 1 0 Il. NETWORK ORGANIZATION AND DEFINITIONS ...... 1 6 A. DEFINITIONS ........................... 1 6 B. GROUP FORMATION ....................... 2 1 C. METHODS OF INDENTIFYING A CELL FOR GROUPING 3 2 1. DIRECT CONNECTION TO THE CELL ........ 3 2 2. SELECTION OF THE CELL THROUGH USE OF
SPECIAL PIN .......................... 3 3 __ 3. aUERY ALL NAMES OF PREVIOUSLY
GROUPED CELLS .................... 3 3 4. STIMULATE GROUP....................... 3 5 5. STIMULATE ANNOUNCER .................. 3 6 6. TOGGLE LlSTENER ...................... 3 7 D. PACKET FORMAT .............................. 3 8 E. MECHANISM FOR PREVENT~NG REBROADCASTING OF
CERTAIN PACKETS ............................ 4 3 F. THREE-OF-SIX COMBINATORIAL CODING ........... 4 6 111. COMMUNICATION AND CONTROL CELL ............ 4 8 A. OVERVIEW OF THE CELL ........................ 4 8 B. PROCESSOR ... ~............................... 5 1C. PROCESSOR OPERATION ......................... 5 6 D. MULTIPROCESSOR OPERATION .................... 5 7 E. PROCESSOR INSTRUCTIONS ...................... 6 6 F. THREE-OF-SIX CIRCUITRY ...................... 9 4 IV. INPUTIOUTPUT SECTION ....................... 9 7 A. GENERAL ................................. 9 7 ( i ) B. BUFFER SECTION ........................... 97 C. I/O COUNTING/TIMING ...................... 9 4 D. I/O CONTROL AND STATE MACHINE ............ 1 0 2 E. ANALOG TO DIGITAL AND DIGITAL TO
ANALOG CONVERSION ........................ 1 O 5 F. I/O COMMUNICATIONS ....................... 1 0 7 G. I/O REGISTERS AND RESOURCE SHARING ....... 1 1 1 V. PROTOCOL .................................. 1 1 8 A. CONTENTION IN GENERAL..................... 1 1 8 B. GROUP ACKNOWLEDGEMENT PACKET CONTENTION ............. 1 2 0 C. COLLISION DETECTION ................................. 122 D. BACKOFF ALGORITHM ................................... 12 4 E. CONTENTION TIMER .................................... 1 25 F. ARQ PROTOCOL ........................................ 1 2 6 G. LINK CONTROL COMMANDS ............................... 130 H. CONNECTION CONTROL................................... 131 I . ABORT SEQUENCE ...................................... 135 J. SYSTEM ID ........................................... 13 6 Vl. GROUPING DEVICE .............................. 1 37 C LAI M S .............................................................................................. 1 4 0 (li' .
, .
.
;, 1 32~275 transmitter at the switch to communicate with the specific desired receiver at the light.
~: As will be seen, the present invention provides substantially more capability and flexibility than current 5 systems.
' :
1 32627'~
SUMMARY OF THE INVEN~ION
A network for providing sensing, communications and control is described. A plurality of intelligent cells each of which comprises an integrated circuit having a processor and 5 inpuVoutput section are coupled to the network. Each of the programmable cells receives when manufactured a unique identification number (48 bits) which remains permanently within the cell. The cells can be coupled to different media such as power lines, twisted pair, radio frequency, infrared ultrasonic, 10 optical coaxial, etc., to form a network.
Networks are distinguished from one another by system identification numbers (IDs). Groups of cells within each network are formed to perform particular functions and are identified by group IDs. Communications occur within the network through use 1~ of the system, group and cell IDs. Some cells (announcers) are assigned the task of sensing, for example, the condition of a switch, and others (listeners) the task of controlling, such as controlling a light. Cells can perform multiple tasks and be members of multiple groups, and, for example, can act as a 20 repeater for one group and a listener in a another group. When manufactured, the cells are identical except for the cell ID; they 1 326~75 are programmed to perform specific tasks for a particular group or groups.
The preferred embodiment of the cell includes a multiprocessor and multiple l/O subsections where any of the 5 processors can communicate with any of the l/O subsections.
This permits the continual execution of a program without potential interruptions caused by interfacing with the l/O
section. The l/O section includes programmable A-to-D and programmable D-to-A converters as well as other circuits for 10 other modes of operation.
The network protocol provides great flexibility, and for instance, allows groups to be formed and/or changed after the cells are in place. As will be seen, the intelligence for the network is distributed among the cells. In general, the network 1~ is lightly loaded, although provisions are made for contention and other conditions which may arise. The communication between t- the cells in general is optimized for carrying out the functions assigned to groups, rather than for transmission of data unrelated to the control function of the network. For this reason, normally 20 the packets carrying messages are relatively short compared to Ethernet, Arpa, AppleTalk, X-25 and many other broadband and data cornmunication systems.
l Accordingly, in one aspect the invention provides a network for sensing, communicating and controlling having a plurality of cells which communicate with one another through packets, a first plurality of said cells being . 5 coupled to sense conditions and for transmitting packets indicating a change in said conditions, said first pluralityof said cells hereinafter referred to as announcer cells, a : second plurality of said cells being coupled to control ,, objects in response to predetermined ones of said packets, said second plurality of said cells hereinafter referred to as listener cells, at least one of said announcer cells and listener cells also performing the function of repeating at `~ least some of said packets, hereinafter referred to as repeater cells, a first group of cells being programmed with - 15 a first group identification number, said first group . including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in ~- said first group being programmed to perform a first group function, a second group of cells being programmed with a < 20 second group identification number, said second group including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in said second group being programmed to perform a second group function, said first group of cells communicating among 25 themselves with first packets, said first packets being " .
:`
1 initiated by at least one of said announcer cells in said first group and acted on at least one of said listener cells in said first group, said second group of cells communicating among themselves with second packets, said second packets being initiated by at least one of said announcer cells in said second group and acted upon by at least one of said listener cells in said second group, whereby communication occurs among said cells in said first and second group to carry out said first and second group functions.
Other aspects of the invented network and cell will be apparent from detailed description of the invention.
` 15 1 326~75 BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 is a block diagram illustrating typical application for the present invention.
Figure 2 is a diagram used to iilustrate the grouping of cells.
Figure 3 is another block diagram similar to Figure 2 used . to illustrate the grouping of cells.
Figure 4 is a diagram used to describe subchannels.
Figure 5 is a diagram illustrating a plurality of cells; this diagram is used to describe cell group formation employing the present invention.
Figure 6 is a chart illustrating the packet format used !~' . with the present invention.
Figure 7 is a chart illustrating the designation list portion of the packet format of Figure 6.
Figure 8 illustrates a series of steps used in forming a group of cell with the present invention.
Figure 9 is a chart illustrating the code assignments for the three-of-six encoding used with the present invention.
Figure 10 is a block diagram of the communication and control cell.
1 326~75 Figure 11 is a block diagram of a portion of the instruction decoding logic used within the processor of the cell of Figure 10 Figure 12 is a detailed block diagram of the process of 5 Figure 10.
Figure 13 is a timing diagram for the processor of Figure 10; this diagram also shows latches and registers used to provide the pipelining employed by the cell.
Figure 14 is a block diagram illustrating the presently 10 preferred embodiment of the three-of-six encoder.
Figure 15 is a block diagram showing the presently preferred embodiment of the three-of-six decoder.
Figure 16 is a block diagram showing the presently preferred embodiment of the three-of-six code verifier.
Figure 17 is an electrical schematic of the buffer section r' of one of the l/O sections.
Figure 18 is an electrical schematic of the counting and timing functions for an l/O subsection.
Figure 19 is an electrical schematic of the control and 20 state machine for an l/O section.
Figure 20 is an electrical schematic for the sample and hold means associated with the l/O subsections.
1 32627~
Figure 21 illustrates the network formed within an l/O
subsection to do digital-to-analog conversion.
Figure 22 illustrates the network formed within an l/O
section for analog-to-digital conversion.
5Figure 23 is an electrical schematic showing the communications portion of an l/O subsection.
Figure 24 is a state diagram used for the l/O subsections and for transmission contentions.
Figure 25 is a state diagram for the link level ARQ.
10Figure 26 is a state diagram for primary station connections.
Figure 27 is a state diagram for secondary station connections.
Figure 28 is a block diagram for a grouping device.
15Figure 29 is a diagram showing the form in which the system ID is encoded for transmission by the packet and encoded . within a cell.
Figure 30 is a diagram used to describe the operation of the inpuVoutput section and semaphore register.
DETAILED DESCRIPTION OF THE PRESENT INVENTION
An apparatus and method for providing a communications, sensing and control in a network is described. Where the network contains a plurality of intelligent cells, the cells in general are 5 programmable single chip remote control, sensing and communication devices that, when interconnected (via various : media) with other cells, have distributed sensing, communication, control and network configuration intelligence, configuration and control. The system comprises a network of cells organized in a i 10 hierarchy based on communications needs. Cells are organized into working "groups" independent of the network hierarchy.
Groups of cells generally are used to perform a group function.
This function is carried out by the assignment of tasks to cells within the groups. Cells communicate, control and sense 15 information. In general, each cell has a unique identification number and perform information processing tasks such as:
bidirectional communications protocol, input/output, packet processing and analog and digital sensing and control. In general, the system comprised of the cells has the characteristic of 20 storing network configuring information that is distributed ` throughout the system; and communicates automatically routed messages among cells. Each system also has a unique ç-''' identification (I D) which in the presently preferred embodiment is 48 bits. Moreover, it contains versatile programmable input/output l/O circuits with digitai versatile programming to configure cells to specific sensing, communication, control and 6 I/O, analog l/O, communication l/O and communications bit rate sensing .
In the following description, numerous specific details are set forth such as specific frequencies, etc., in order to provide a thorough understanding of the present invention. It will be 10 obvious, however, to one skilled in the art that these details are not required to practice the invention. In other instances, well-known circuits, methods and the like are not set forth in detail in order not to unnecessarily obscure the present invention.
1.
OVERVIEW OF AN APPLICATION OF THE PRESENT
INVENTION
Before describing the present invention in detail, an understanding of a typical application will aid in appreciation of 20 the details to follow. In Figure 1, a simple, typical application is shown based on the use of the present invention in a home. In 1 326~7'~
Figure 1, the switch 22 is used through the present invention to control the light 23.
The arrangement 20 comprises a cell 27 which is connected to the switch 22. The cell is also connected to a transceiver 29 5 which couples data onto the lines 24 and 25. Power for the transceiver and cell are provided from the power supply 30 which receives power from the lines 24 and 25. For this example, the lines 24 and 25 are ordinary household wiring (e.g., 110VAC) and the power supply 30, a five volt DC supply. The cell 27 is 10 preferably an integrated circuit which is described in more detail beginning with Figure lO. The transceiver 29 may be any one of many well-known devices for receiving and transmitting digital data and as presently contemplated does not perform any processing on transmitted data. The entire arrangement 20 may 15 be small enough to fit within an ordinary wallmounted electrical box which normally contains an electrical switch.
The arrangement 21 again may be small enough to fit within a typical electrical outlet box and includes a power supply 31 and transceiver 33 which may be identical in construction to the 20 power supply 30 and transceiver 29, respectively. This cell 28 is coupled to the transceiver 30 and power supply 29 as well as the solenoid operated power switch 32. Cell 28 may be identical to , ,\ ~
~ 32627':1 "
cell 27 except for programming and an identification number which shall be discussed later. An output from the cell 28 controls the solenoid 32 to operate a power switch which in turn connects the light 23 to the power lines 34 and 35. The cell 28, 5 as will be seen, can provide a digital or analog output, which can control a rheostat (not shown) or the like, thus enabling the dimming of the light 23.
The break 26 in the power lines 24 and 25 is used to indicate that the power lines 24 and 25 may not necessarily be on 10 the same circuit as power lines 34 or 35. As will be seen, the transceiver 29 may not necessarily communicate directly with transceiver 33, but rather communication between the transceivers may require linkage through another cell and transceiver which repeats packets sent between the 15 arrangements 20 and 21.
In Figure 1, the transceivers 29 and 33 communicate over power lines. The transceivers may communicate with one another . in numerous different ways over countless media and at any baud rate. They may, for example, each transmit and receive radio 20 frequency or microwave frequency signals through antennas. The transceivers could be connected to a communications lines, such as an ordinary twisted pair or fiberoptic cable and thus 1 32627~
communicate with one another independent of the power lines.
Other known communications medium may be employed between the transceivers such as infrared or ultrasonic transmissions.
Typical transmission rates are 10K bits per second (KBPS) for 5 power lines. Much higher transmission rates are possible folr radio frequency, infrared, twisted pairs, fiberoptic links and other media.
Cell 27 senses the opening or closing of the switch 22, then prepares a packet which includes a message initiating the state 10 of the switch 22; the packet is communicated to the cell 28 through transceiver 29, lines 24 and 25, lines 34 and 35, and transceiver 33, The cell 28 acknowledges the message by returning a packet to the cell 27 and also acts upon the message it received by turning on or off the light 23 by operating the 15 solenoid controlled power switch 32.
Each cell has a unique 48 bit identification number (ID
number), sometimes referred to as the cell address. In the currently preferred embodiment, each cell as part of the manufacturing process, receives this permanent and unique ID
20 number. (It cannot be changed following manufacturing.) As will be appreciated, with approximately 248 possible ID numbers, each cell will have a unique ID number no matter how large a network becomes for practical purposes, or no matter how many networks are interconnPcted. The grouping device then accesses the individual cell IDs and assigns a system ID to each cell. In addition, the grouping device configures the cells into groups to 5 perform group related functions.
For the illustration of Figure 1, cell 27 is designated as "A"
to indicate that its primary function is to "announce" that is, transmit the state of switch 22 on the network communications lines 24 and 25, and 34 and 35. On the other hand, cell 28 is ` 10 designated with the letter "L" since its primary function in Figure I is to "listen" to the network and in particular to listen to messages from cell 27. In subsequent figures, the "A" and "L"
designations are used, particularly in connection with a group formation of multiple cells to indicate an announcer arrangement, 15 such as arrangement 20 and a listener arrangement, such as arrangement 21. For purposes of discussion the cells themselves ,~
are sometimes referred to as transmitting or receiving data without reference to transceivers. (In some cases, ~he transceivers may be a simple passive network or simple wires, 20 which couple the inpuVoutput of a cell onto a line. As will be seen the l/O section of the cells can provide output signals that 1 32627~
can drive a twisted pair or the like. Thus the cells themselves can function as a transceiver for some media.) The cells 27 and 28 as will be described subsequently are processors having multiprocessor attributes. They may be 5 programmed prior to or after installing to perform their required function, such as an announcer or listener and for grouping combinations.
1 32h27~
NETWORK ORGANIZATION AND DEFINITIONS
A. Definitions Cell: A cell is an intelligent, programmable element or elements providing remote control, sensing and/or communications7 that when interconnected with other like elements form a communications, control and sensing netwsrk or system with distributed intelligence.
Announcer: An announcer is a source of group messages.
Listener: A listener is a sink of group messages.
(An announcer in some cases may request state information from a listener.) Repeater: A repeater is a cell which in addition to other 1~ functions reads packets from a medium and rebroadcasts them.
Group: A set of cells which work together for a common function (for example, a switch controlling a set of lights) is referred to as a "group".
In Figure 2, the group 37 has an announcer 37a, listeners 37b, and 37c, and a listener 40. A group 38 includes an announcer 38a, listeners 38b and 38c and the listener 40. Figure 2 illustrates that a single cell (cell 40) may be a listener in two groups. If announcer 37a has a light switch function, it can control lights through cells 37b, 37c and 40. Similarly, a switch associated with announcer 38a can control lights through cells 37c, 37b, and 40.
In Figure 3, a group 42 includes announcers 44, 45 and Iisteners 46 and 47. The group 43 shares cell 44 with group 42;
however, cell 44 is a listener for group 43. The group 41 shares cell 47 with group 42; cell 47 is an announcer for group 41 and for example, can announce to the listener 48 of group 41. Cell 47 also operates as a listener for group 42. A single cell as shown may be an announcer for one group and a listener for another group . , .
-~ (cells are programmed to perform these functions, as will bediscussed). However, as presently contemplated, a single cell cannot announce for more than one group.
(In the currently preferred embodiment each cell has three .-- inpuVoutput pairs of lines and a select line. Each pair shares a common set of resources. The lines may be used independently for some functions where the required shared resources do not conflict. In other functions, the lines are used as pairs. In this example, a pair of leads from cell 27 are coupled to a light switch and another pair are used for communications from the announcer, cell 27.) ,~ .
~ 32627'i Subchannel: In Figure 4, a first plurality of cells are shown communicating through a common medium such as a twisted pair 50 (cells are shown as "C", announcers as "A" and listeners as "L").
This (e.g., twisted pair 50) is defined as a subchannel, that is, a 5 set of cells all of which communicate directly with one another over the same medium. A broadcast by any member of the subchannel, such as the cell 49, will be heard by all members of that subchannel over the twisted pair 50.
Channel: A channel comprises two or more subchannels 10 where all the cells communicate using the same medium. In Figure 4, another plurality of cells are shown coupled to twisted pair 52 forming another subchannel. Assume cells 56 and 57 communicate between one another through a twisted pair 72.
They form yet another subchannel. The cells associated with the 15 twisted pairs 50, 52 and 72 comprise a single channel. It is possible that the twisted pairs 50, 52 and 72 are one continuous twisted pair with one subchannel 50 so far apart from the second subchannel 52 that the only communications between subchannels is over the portion of the twisted pair 72 running between cells 56 and 57. In this case the cells 56 and 57 are assigned to be "repeaters" in addition to whatever other function they may serve (e.g., announcer or listener).
A ~roup 55 is illustrated in Figure 4 which comprises an announcer and listener in the two different subchannels. Another group 75 is illustrated comprising an announcer on one subchannel 51 and subchannel 52, where the subchannels are not part of the 5 same channels since they use different media.
Gatewa~L: A gateway reads packets from two different media and rebroadcasts them. A cell may be a gateway.
Communications between channels is through gateway 54.
In Figure 4, an additional subchannel which includes the cell 10 58 is coupled to another medium 51, for example, a common power line. The cell 58 is shown connected to channel gateway 54 which in turn communicates with the twisted pair 52. The gateway 54 does not necessarily perform either an announcer or listener function, but rather for the illustrated embodiment, performs 15 only a channel gateway function by providing communication ` between two different media.
Subnetwork: A subnetwork comprises all the cells having the same system identification (system ID). For example, all the cells in a single family home may have the same system ID.
20 Therefore, the channels of Figure 4 may be part of the same subnetwork in that they share the same system ID.
:
Full Network: A full network may comprise a plurality of subnetworks each of which has a different system ID; a communications processor is used for exchanging packets between subnetworks. The communications prooessor translates 5 packets changing their system ID, addressing and other information. Two factory buildings may each have their own system ID, but control between the two is used by changing ` system IDs. (The word "network" is used in this application in its more general sense and therefore refers to other than a "full 10 network" as defined in this paragraph.) Other terms used later are:
Probe Packet: A packet routed by flooding which accumulates routing information as it travels through the ^~ network.
- 15 Groupin~ Device: A device that controls determination of routes among cells, assigns cells to groups, and assigns function to group members.
Contention: The state which exists when two or more cells . attempt to transmit a broadcast on the same subchannel at the 20 same time and their signals interfere.
.
- . . :
, , .
.
~, :
' ' , 1 32627~
B. GROUP FORMATION
1. Cells Assianed to a aroup bv a postinstallation ~roupin~
device.
Assum~ that the plurality of cells shown in Figure 5 are all connected to communicate over the power lines in a home and are part of the same channel. Further assume that one cell, announcer 60, is to be grouped with the listener 65. The lines between the cells such as line 59 is used to indicate which of the cells can communicate directly wi~h one another, for instance, announcer 10 60 and cell 61 can communicate with one another. (Cells 61, 62, 63, 64 and 66 of course may be announcers or listeners in other groups, but for purposes of explanation are shown as "C" in Figure 5.) Since announcer 60 and cells 61, 62, and 63 all communicate with one another, they are on the same subchannel. Similarly, 15 cells 62, 64, 65 and 66 are another subchannel. (There are other subchannels in Figure 5). Importantly, however, announcer 60 and listener 65 are in different subchannels of the channel of Figure 5 and there are numerous routes by which a message can be passed from announcer 60 to listener 65, for example, through cells 61 20 and 64 or through cells 62 and 64, etc.
Note that even though all the cells are on the same power system of a house, they may not communicate directly with one .
1 32627~
another. For instance, the announcer 60 may be on one circuit which is only coupled to the listener 65 through long lengths of wire running the length of a home and a low impedance bus bar of a circuit breaker panel. The high frequency communication 5 messages may be sufficiently attenuated through this path to prevent direct communications between cells even though they are physically close to one another.
For the following description, it is assumed that each of the cells can broadcast without interfering with the broadcast of 10 other cells. That is, messages do not interfere with one another.
The case where some contention occurs is dealt with under the protocol section of this application.
In one embodiment, the group of announcer 60 and listener ~- 65 is formed by using the grouping device shown in Figure 28.
15 Note that before this group is formed the announcer 60 and Iistener 65 are ordinary cells, not designated to be an announcer and listener. Each grouping device may be assigned a unique 48 bit system ID at time of manufacture (in the presently preferred embodiment a 48 bit number is used). In the presently preferred 20 embodiment, a cell is included with each grouping device. The cell's ID becomes the system ID. This assures that each system has a unique system ID. By way of example, each home has its .
1 32627~
own "grouping" device and hence, its own system ID for the subnetworks used in the home. This system iD is used in cell packets for the subnetwork. In this example, the grouping device has available the cell IDs of cells 60 and 65. (Various methods of 5 obtaining cell IDs will be described later.) The grouping device is connected to cell 60 by communicating through one of its three pairs of inpuVoutput (I/O) lines of the cell (or the select pin) and the grouping device reads the 48 bit ID number of the cell 60. (Different methods of 10 determining the cell's IDs are described in the next section.) The grouping device next generates a random bit binary number which in the presently preferred embodiment is 10 bits. This number functions as a group identification number (also referred to as the group address) for the group comprising the announcer 60 and 15 listener 65. The grouping device checks this number against other group IDs which it has previously assigned to determine if the group ID has previously been used. If it has been already used ` it generates another number. (A single grouping device, for . instance keeps track of all the group IDs assigned in a single 20 home.) The grouping device programs the cell 60 designating it as an announcer.
.
The grouping device may cause the announcer 60 to broadcast the group number in a special packet which asks all cells in the network to acknowledge the message if they have been designated as a member of this group. This is another way 5 to verify that the group ID has not been used.
The grouping device now determines the ID number of the cell 65. This may be done by connecting the grouping device directly to the cell 65 even before the cell is installed or by other methods discussed in the next section. (A cell and a group 10 can be assigned ASC;II names, for example, "porchlight" (cell name) and Nexterior lights" (group name). This is used to allow selection of cell IDs or group IDs by accessing the ASCII name.
Now the grouping device causes the announcer 60 to transmit a probe packet. The probe packet contains the ID of cell 15 65. The packet directs all cells receiving the packet to repeat it and directs cell 65 to acknowledge the packet. Each cell receiving the probe packet repeats it and adds to the repeated packet its own ID number. Each cell only repeats the packet once (the mechanism for preventing a probe packet from being repeated 20 more than once is described later.) The cell 65 receives the probe packet through numerous routes, including those which in the diagram appear to be most , ' ~':
.
~ 1 32627~
~:
direct (via cell 62) and those which are longer, for example, via cells 61 and 64. It is assumed that the first probe packet to arrive at cell 65 took the most direct route and is therefore the preferred routing. (Assume that this is via cell 62.) Cell 65 5 receives a packet which indicates that the probe packet was transmitted by cell 60, repeated by cell 62 and intended for cell 65. The other probe packets received by cell 65 after this first packet are discarded by cell 65.
Cell 65 now transmits an acknowledgement back to 10 announcer 60. This packet includes the routing of the probe packet (e.g., repeated by cell 62). The packet directs cell 62 to repeat the packet to confirm its receipt.
After announcer 60 receives the acknowledgement packet -. for cell 65 it determines that cell 62 must be a repeater. The 15 grouping devices causes announcer 60 to send a repeater assignment packet which includes the unique ID number of cell 62, the group number and a message which informs cell 62 that it is assigned a repeater function for the group. This causes cell 62 to repeat all those packets for th~ group comprising announcer 20 cell 60 and 65. Another message is sent from announcer 60 under control of the grouping device repeated by cell 62, designating cell 65 as a listener, causing it to act upon messages for the ;' ,, 1 326275 `
group (cell 65 becomes a group member.) The grouping device assigns members a member number whch is stored by member cells.
The group formation described above is shown in Figure 8 by steps or blocks 68 through 72. Block 68 illustrates the - broadcasting of the probe packet (e.g., cell 60 transmits the initial probe packet to all cells). The packet includes the address of a destination cell. As the packet proceeds through the network, the packet and accumulates the ID numbers of those - 10 cells repeating the packet (block 69). Block 70 shows the acknowledgement (reply) to the probe packet from the destination cell (e.g., cell 65). This packet returns the ID
numbers of the repeaters contained in the first received probe ~ , , packet. Repeater assignment packets are sent out by the 15 announcer causing each repeater to rebroadcast packets for the group; this is shown by block 71. Finally, as shown by block 72, the destination cell such as cell 65 is designated as a listener.
2. Cells assigned to a group ~L a prein~tallation grouping device.
There may be several types of preinstallat;on grouping 20 devices, for example, see Figure 28 for a device which may be used. One type is a device that a manufacturer uses to preassign cells to groups. Another type of preinstallation grouping device 1 32627~
~ is one that a retailer or other cell vendor may use to assign cells - to groups before installation.
A grouping device assigns a cell to a group and assigns the cell's function(s) for that group. The grouping device may also assign a system ID to the cell. The system ID assigned by a preinstallation grouping device is not necessarily a unique system ID. (Postinstallation grouping devices assign a unique system ID to each system.) One method that may be used by preinstallation grouping . 10 devices to generate a system ID is to choose a systern ID from a range of the 48 bit address and system ID numbers that have been set aside for use as preinstallation system IDs. Just as the cell IDs in the range 1-1023 have been set asida for use as group IDs ~ and group addresses, the cell IDs in the range 1024-2047 can be - 15 set aside for use as preinstallation system IDs.
It is desirable that grouping devices and other network control devices be able to identify preinstallation system IDs as opposed to postinstallation system IDs. Since postinstallation sytem IDs are generated by copying a cell ID, cell IDs should not 20 be assigned in the range set aside for preinstallation system IDs.
Therefore, ID numbers in that range would not be assigned to cells as cell IDs.
1 326~75 Cells may be sold in sets that have been preassigned to a group by the manufacturer. The type of preinstallation grouping device used by the rnanufacturer assigns cells to groups by writing the appropriate codes into the cells' nonvolatile memory.
5 The user may install such a set of cells and it will operate ~- without assignment by a postinstallation grouping device provided that the set of cells may communicate via a single subchannel .
A user may assign cells to a group at the time cells are 10 purchased or at any other tirne before installation. Such cells, unlike the case previously discussed, are not assigned to groups by the manufacturer and are called unassigned cells. Unassigned - cells all have the same system ID, a system ID number that has been set asido for use only by unassigned cells.
15The user assigns a set of cells to a group by using a preinstallation grouping device that may be different from the preinstallation grouping device used by a manufacturer.
Typically, such a grouping device will operate on one cell at a time. The operator commands the grouping device to generate a 20 new group ID and system ID and then each cell is connected to the - device in turn. The operator commands the grouping device to assign a cell to the group while the cell is connected to the .
grouping device. The grouping device assigns cells the same group ID and system ID until it is commanded by the operator to generate a new group ID and system ID.
The user may install such a set of cells and it will operate 5 without use of a postinstallation grouping device provided that the set of cells can communicate via a single subchannel.
3. Unassi~ned Cells Grouping and Self-Assignment After Installation.
Unassigned cells may create a group and assign themselves 10 to the group after installation in the following manner.
The first announcer cell that is stimulated via its sensor input (e.g., light switch) controls the group formation process. It chooses a system ID number at random from the range of system ID numbers that have been set aside for preinstallation grouping 15 devices. It chooses a group ID number at random. It then broadcasts the group ID number in a packet that requests a reply from any cells that are members of that group. If the transmitting cell receives any such replies, it chooses another group ID at random. The cell continues this process of selecting a 20 random group ID and testing to see if it is already in use until it finds a gro-up ID that is unused in the system in which it is operating.
An unassigned cell's default configuration information programmed at the factory identifies its function as either a listener or an announcer. If the unassigned cell is an announcer, - it waits for its sensing input to be stimulated, and when it is stimulated, the cell transmits a packet addressed to a group.
If an unassigned cell is a listener, it listens after power-up for a packet. The cell takes the group ID from the first packet it receives and assigns itself to that group. The cell then sends a reply to the announcer cell. This reply is not an acknowledgement only packet; it is a packet that identifies the cell as a listener in the group and the packet must be acknowledged by the announcer.
This assures that all of the listener identification packets will arrive at the announcer even though there will be contention and collisions in the process.
The cell that transmitted the group announcement builds a . Iist of group members as each reply comes in. It then sends a packet to each listener assigning that listener a group member number.
4. Unassigned Cells Joining Preexisting Group After Installation.
Unassigned cells may be added to existing systems and assigned to a group in a manner similar to the above method v~.
discussed in Section 3 above. A listener joins the system and a group by the same method as in Section 3 above.
In the above example, the announcer waits to be stimulated via its sensor input. An unassigned announcer waits for its first sensor input stimulation or its first received packet. Of those two events, the event that occurs first determines the subsequent actions of the announcer cell.
; If the cell is stimulated first, it controls a group formation process just as in the above example. If the announcer cell 10 receives a group packet first, it joins that group as an announcer.
It then sends a packet to the group announcer requesting configuration information about the group (group size, number of announcers,etc.) and the assignment of a group member number.
:
C. METHODS OF IDENTIFYING A CELL FOR GROUPING
In order for a grouping device to go through the steps necessary to form a group or add a cell to a group, it must know the IDs of the cells to be added to the group. The grouping device then uses those cell IDs to address commands to the cells during the grouping process. The methods that a user with a grouping device may use to obtain the cell IDs are listed below. Note that a grouping device or other control device's ability to communicate with a cell in the following example may be limited by security procedures if used. The security procedures, limitations on communications and levels of security are not critical to the present invention. The following example assumes that no security procedures are in place. In particular, it may be impossible for a grouping device to communicate with installed 1~ cells unless the grouping device has the system key (system ID
and encryption keys.) 1. Direct connection to the cell.
The grouping device may be connected to an l/O line of the cell package and then send a message to the cell requesting its ID.
. 20 Physical connection can be used to find a cell's ID either before or after the cell is installed. Known means can be used (e.g., a fuse . . , or a programmed disable command) to allow a user to disable this function in an installed cell to protect the security of the system.
2. Selection of the Cell Through Use of Special Pin The user may use the grouping device or some other 5 selection device to physically select the cell by stimulating a cell input pin that has been designated to serve the selection function. The grouping device communicates with the cell through the normal communications channels and sends a broadcast message requesting that all selected cells reply with 10 their ID. Only one cell is selected so only that cell wiil reply to ,~ the request. Physical selection can be used to find a cell's ID
-~ either before or after the cell is installed. Again, a means can beprovided to allow a user to disable this feature to protect the security of the system.
15 3. Query All Names of Previously Grouped Cells . It is assumed in this example that ASCII "groups" and "cell"
names have been previously assigned to the cells. For this ~ method, the grouping device queries all of the cells in a system to ; report their group and cell names (ASCII name). The user scrolls 20 through the list of group names by using the grouping device. The -~ user selects the name of the group that is believed to contain the ` target cell. The grouping device displays the names of all of the . .
cells that are in the group and their assigned tasks (announcer, listener, repeater). The user selects the name of the cell that is believed to be the target cell.
` If the selected cell is an announcer, the grouping device 5 prompts the user to activate the announcer by stimulating its input. For example; if the cell is attached to a light switch, the user turns the switch on and off. The cell sends announcement packets to the group. The grouping device listens to the communications channel and discovers the group and member 10 numbers or other codes of the activated announcer.
If the selected cell is a listener cell, the grouping device sends packets to the cell (using the group and member numbers for addressing) commanding it to toggle its output. For example, if the cell controls a light, the light will flash on and off. This 15 allows the user to verify that he has selected the correct cell.
~; The grouping device sends a packet (using group and member numbers for addressing) to the target cell with a command for . the target cell to return its cell ID. The grouping device now .' knows the target ID and can proceed with the group assignment 20 process.
Querying names is used to find a cell's ID before or after the cell is installed.
' ' ;; ~ 326~75 4. Stimulate Group.
This method is used in a network in which group and cell ASCII names have been assigned. The user commands the grouping device to wait for the next group announcement. Then the user stimulates the announcer in the group of interest. For example, if the announcer is a light switch, the user throws the switch. The ~`, grouping device hears the announcement packet and extracts the .- group ID from it.
.~
The user may verify that this group ID is for the desired group by causing the grouping device to send packets to all of the group listeners commanding them to toggle their outputs. The user verifies that it is the desired group by observing the actions of the listener cells (for example, if the group consists of lighting controls, the light flashes).
Now using that group ID, the grouping device broadcasts a packet to the group requesting that each cell reply with its cell name until the cell of interest is found. The user selects that name and the grouping device, knowing that cell's ID, can proceed with the group assignment process.
If a user elects, the ID of the cell may be verified before proceeding with the grouping procedure. The following procedure is used to verify that the ID is for the target cell.
; 35 If the selected cell is an announcer, the grouping device prompts the user to activate the announcer by stimulating its input. For example: if the cell is attached to a light switch, the user turns the switch on and off. The grouping device is then able 5 to discover the group address and member number of the cell.
If the selected cell is a listener, the grouping device sends packets to the cell (using the group and member numbers, for addressing) commanding it to toggle its output. For example, if the cell controls a light, the light will flash on and off. This i~ 10 allows the user to verify that he has selected the correct cell.
5. Stimulate Announcer.
This method is used in a network in which no group or cell ASCII names have been assigned but announcers and listeners have been assigned. The grouping device sends a packet to all 15 cells in the network commanding each announcer to broadcast a packet containing its ID the next time it is stimulated. The grouping device then prompts the user to stimulate the announcer by activating its sensed device; for instance, turn on a light switch for a light switch announcer. Since the user will - 20 stimulate only one announcer, the groupins device will receive ~ only one packet with a cell ID.
.
,.,:
-., 1 32627~
There is a chance that another announcer cell will be stimulated at the same time. Perhaps someone else throws a light switch or a temperature sensor detects a temperature change. The user may want to verify that the ID received is for 5 the correct cell. To verify that the cell ID is the correct one, the user goes through the announcer stimulation process a second time and verifies that the same results occur.
6. Toggle Listener . This method is used in a network in which no group or cell 10 names have been assigned. The grouping device broadcasts a packet that queries cells that are listeners to reply with their ID.
The grouping device needs to limit the number of cells replying so - the packet contains an ID bit mask to limit replies to a subset of the possible cell IDs. When the grouping device has developed a list of listener IDs, it allows the user to toggle each listener, causing the listener cell to turn its output on and off. The user continues through the list of listener cells until he observes the target cell toggling its output. The user has then identified the cell to the grouping device and it can proceed with the grouping 20 operation.
D. PACKET FORMAT
Each packet transmitted by a cell contains numerous fields.
For example, a format used for group announcements is shown in Figure 6. Other packet formats are set forth in Appendix A.
Each packet begins with a preamble used for synchronizing the receiving cells' input circuitry (bit synch). The particular .~ preamble code used in the currently preferred embodiment is described as part of the three-of-six combinatorial codes (Figure . 9). A flag field of 6 bits begins and ends each of the packets. The 10 flag field code is also described in Figure 9.
. As currently preferred, each of the cells reads-in the entire.~ packet, does a cyclic redundancy code (CRC) calculation on the i packet except for the contention timer field and compares that result with the CRC field of the received packet. The ALU 102 of '- 15 Figure 12 has hardware for calculating the packet CRC and CRC
` registers 130 for storing intermediate results. If the packet CRC cannot be verified for an incoming packet, the packet is . discarded. The packet CRC ~ield is 16 bits as calculated, then converted into 24 bit fields for transmission in a 3-of-6 code ^ 20 using the encoding of Figure 9. (For the remainder of discussion .
of packet fields in this section, the field length is described prior ~
to encoding with the 3-of-6 combinatorial codes of Figure 9.) In , -i/, ~
the currently preferred embodiment the CRC is a CCITT standard algorithm (X16+X 12 + X 5 + 1).
The system ID is a 32 bit field as currently preferred. The 5 other 16 bits of the 48 bit system ID are included in the CRC
~ s calculation but not transmitted as part f the packet (Figure 29).
; The link address field is a 48 bit field. When this field is all zeroes the packet is interpreted as a system wide broadcast which is acted upon by all the cells. For instance, a probe packet 10 has an all zero field for the link address. Group addresses are contained within the link address. For group addresses the first ~ 38 bits are zero and the remaining lO bits contain the group - address. (The cell ID numbers assigned at the factory mentioned earlier range from 1024 to 248 since 210 addresses are reserved . 15 for groups.) The link address, in some cases, is an individual's cell's address. (For example, when a cell is being assigned the task of repeater or listener.) The contention timer is a lO bit field with an additional 6 bits for a CRC field (or other check sum) used to verify the 10 20 bits of the timer field. Each cell which repeats a packet operates upon this field if the cell must wait to transmit the packet. If packets are being transmitted by other cells a cell must wait to '':
,~ .
:
transmit its packet, the time it waits is indicated by counting down the contention timer field. The rate at which this field is counted down can be programmed in a cell and this rate is a function of the type of network. The field starts with a constant 5 which may be selected by the type of network. Each cell repeating the packet counts down from the number in the field at the time the packet is received. Therefore, if a packet is repeated four times and if each of the four cells involved wait for transmitting, the number in the contention field reflects the sum 10 f the times waited subtracted from a constant (e.g., all ones).
When the contention timer field reaches all zeroes, the cell waiting to transmit the packet discards the packet rather than transmit it. This prevents older packets from arriving and being interpreted as being a new packet.
~, As mentioned, the contention timer has its own 6 bit CRC
field. If the contention timer field were included in the packet CRC, the packet CRC could not be computed until a packet could ~- actually be transmitted. This would require many calculations in the last few microseconds before a transmission. To avoid this 20 problem a separate CRC field is used for the contention timer field. If the contention timer field cannot be verified by its 6 bit CRC, the packet is discarded.
~ ; .
,, ,~ . . . .
The hop count field records the number of hops or retransmissions that a packet takes before arriving at its destination. This 4 bit field starts with a number which is the maximum number of retransmissions allowed for a particular 5 packet and is decremented by each cell repeating a packet. For example, in a packet originated by a group announcer the starting "hop" count is the maximum number of retransmissions that the packet must undergo to reach all of the cells in a group. When this field becomes all zeroes, the packet is discarded by the cell, - 10 rather than being retransmitted Therefore, 16 hops or retransmissions is the limit as currently implemented.
The link control field provides the link protocol and consists of 8 bits. This field is discussed in a subsequent section covering other layers of the protocol.
The random/pseudo random number field contains an 8 bit random number which is generated for each packet by the cell originally transmitting the packet. This number is not regenerated when a packet is repeated. This number is used as will be explained in conjunction with Figure 8 to limit 20 rebroadcasting of probe packets; it also may be used in conjunction with encryption where the entire packet is to be encrypted .
'~' ~ 326275 The network control field (4 bits) indicates routing type or packet type, for instance, network control, group message, probe message, etc.
The source address field (variable size) contains, by way of 5 example, the 48 bit ID number of the cell originating a packet.
For a probe packet this field contains the ID number of the announcer. For an acknowledgement the field contains the ID of the listener. For a packet addressed to a group, this field contains the source cell's group member number.
The destination list is described in conjunction with Figure 7.
: The message field is variable in length and contains the - particular message being transmitted by the packet. Typical -~ messages are contained in Appendix B. In the case of a probe - 15 packet the field includes the routing; that is, each cell repeatingincludes its ID number to this field. The messages, once a group is formed, will, for instance, is used by announcer 60 to tell ; listener 65 to turn-on a light, etc.
The encryption field, when used, contains 16 bits used to 20 verify the authenticity of an encrypted packet typically this portion of a packet is not changed when a packet is repeated.
Well-known encryption techniques may be used.
~'!
1 32627~
The bracket 99 of Figure 6 represents the portion of a packet which remains unaltered when a packet is repeated. These fields are used to limit repeating as will be described in conjunction with Figure 8.
The destination list field of the packet of Figure 6 is shown in Figure 7. The destination list begins with a 4 bit field which indicates the number of members in a group designated to receive a message in the packet. Therefore the packet can be directed to up to 16 members of a group. The number of each of the members within the group is then transmitted in subsequent 8 bit fields.
The group number contained in the link address and member ~.
number contained in the destination list forms an address used to . convey messages once the group is formed. If the destination number is zero, the packet is addressed to all members of the 15 group. For some packet types this field contains the ID of the . receiving cell (see Appendix A).
E. MECHANISM FOR PREVENTING REBROADCASTING OF
~^ CERTAIN PACKETS
~;~
-. As previously mentioned, the probe packets are repeated only once by each of the cells after the packet is initially '.`
~
broadcast. A special mechanism programmed into each of the cells allows the cells to recognize packets which it has recently repeated.
First, it should be recalled that as each cell transmits, or 5 retransmits a packet, it calculates a packet CRC field which : precedes the end flag. For packets that are repeated, a new CRC
i is needed since at least the hop count will change, requiring a ~- new packet CRC field for the packet. This CRC field is different from the CRC field discussed in the next paragraph.
As each packet requiring repeating is received, a repeater CRC number is calculated for the fields extending from the beginning of the link control to the end of the destination list as indicated by bracket 99 of Figure 6. As a cell rebroadcasts a packet it stores the 16 bit repeater CRC results in a circular list 15 of such numbers if the same number is not already stored.
However, the packet is repeated only if the circular list does not contain the repeater CRC results calculated for the field 99.
.~; Therefore, as each packet is received which requires .~ repeating, the CRC is computed for the field 99. This is shown by20 block 73a of Figure 8. This number is compared with a list of 8 .:- numbers stored within the RAM contained within the cell - indicated by block 73b. If the number is not found within the ~.. -, . . .
1 32627~
stored numbers, the new repeater CRC results are stored as indicated by block 73c and the packet is repeated. On the other hand7 if the number is found then the packet is not repeated. As presently implemented, 8 numbers are stored in a circular list, 5 that is, the oldest numbers are discarded as new ones are computed.
The use of the repeater CRC calculation associated with the field 99 and the use of the circular list will prevent repeating of a previously rebroadcasted packet. Note that even if an announcer 10 continually rebroadcasts the same sequence of messages, for example, as would occur with the continuous turning on and turning off of a light, a cell designated as a repeater will rebroadcast the same message since the packet containing messages appears to be different. This is true because the . 15 random number sent with each of the identical messages will presumably be different. However, in the instance where a cell receives the same message included within the same field 99 (same random number), the packet with its message will not be rebroadcast. This is particularly true for probe packets. Thus, for 20 the establishment of groups discussed above, the broadcast probe packets quickly "die out" in the network, otherwise they may echo 1 32627~
for some period of time, causing unnecessary traffic in the n etwo rk .
F. THREE-OF-SIX-COMBINATORIAL CODING
In many networks using the synchronous transmission of digital data, encoding is employed to embed timing information within the data stream. One widely used encoding method is Manchester coding. Manchester or other coding may be used to . encode the packets described above, however, the coding described below is presently preferred.
A three-of-six combinatorial coding is used to encode data for transmission in the presently preferred embodiment. All data is grouped into 4 bit nibbles and for each such nibble, six bits are transmitted. These six bits always have three ones and three zeroes. The transmission of three ones and three zeroes in some :~j 15 combination in every six bits allows the input circuitry of the cells to quickly become synchronized (bit synch) and to become byte synchronized as will be discussed in connection with the l/O
section. Also once synchronized (out of hunt mode) the transitions in the incoming bit stream are used to maintain synch.
- 20 The righthand column of Figure 9 lists the 20 possible combinations of 6 bit patterns where 3 of the bits are ones and 3 are zeroes. In the lefthand column, the corresponding 4 bit 1 32627~
pattern assigned to the three-of-six pattern is shown. For example, if the cell is to transmit the nibble 0111, it is converted to the bit segment 010011 before being transmitted.
Similarly, 0000 is converted to 011010 before being transmitted.
5 When a cell receives the 6 bit patterns, it converts them back to ; the corresponding 4 bit patterns.
- There are 20 three-of-six patterns and only 16 possible 4 bit combinations. Therefore, four three-of-six patterns do not have corresponding 4 bit pattern assignments. The three-of-six 10 pattern 010101 is used as a preamble for all packets. The flags .~ for all packets are 101010. The preamble and flag patterns are - particularly good for use by the input circuitry to establish data ~ synchronization since they have repeated transitions at the basic `- data rate. The two three-of-six patterns not assigned can be used . 15 for special conditions and instructions.
Accordingly, a cell prepares a packet generally in integral number of bytes and each nibble is assigned a 6 bit pattern before transmission. The preamble and flags are then added. The circuitry for converting from the 4 bit pattern to the 6 bit 20 patterns and conversely, for converting from the 6 bit patterns to the 4 bit patterns is shown in Figures 14 and 15.
.i:
~ 326275 I I I .
COMMUNICATION AND CONTROL CELL
- A. Overview of the Cell ~ 5 Referring to Figure 10, each cel! includes a multiprocessor 100, inpuVoutput section 107-110, memory 115 and associated timing circuits shown specifically as oscillator 112, and timing generator 111. Also shown is a voltage pump 116 used with the 10 memory 115. This cell is realized with ordinary integrated circuits. By way of example, the multiprocessor 100 may be fabricated using gate array technology, such as described in U.S.
Patent 4,642,487. The preferred embodiment of the cell ~, - comprises the use of CMOS technology where the entire cell of 15 Figure 10 is fabricated on a single silicon substrate as an integrated circuit. (The multiprocessor 100 is sometimes referred to in the singular, even though, as will be described, it is a multiprocessor, specifically four processors.) The multiprocessor 100 is a stack oriented processor having 20 four sets of registers 101, providing inputs to an arithmetic logic ., unit (ALU) 102. The ALU 102 comprises two separate ALU's in the presently preferred embodiment.
~.
-- .
The memory 115 provides storage for a total of 64KB in the currently preferred embodiment, although this particular size is not critical. One portion of the memory is used for storing instructions (ROM code 115a). The next portion of the memory is 5 a random-access memory 115b which comprises a plurality of ordinary static memory cells (dynamic cells can be used). The third portion of the memory comprises an electrically erasable and electrically programmable read-only memory (EEPROM) 115c.
.~. In the currently preferred embodiment, the EEPROM 115c employs 10 mèmory devices having floating gates. These devices require a higher voltage (higher than the normal operating voltage) for programming and erasing. This higher potential is provided from an "on-chip" voltage pump 116. The entire address space for : memory 115 addressed through the ALU 102a which is one part of ., 15 the ALU 102.
The ROM 115a stores the routines used to implement the various layers of the protocol discussed in this application. This ROM also stores routines needed for programming the EPROM
115c. The application program for the cell is stored in ROM 115a 20 and, in general, is a routine which acts as a "state machine"
driven by variables in the EEPROM 115c and RAM 115b. RAM 115b stores communications variables and messages, applications ' -~ 326~75 variables and "state machine" descriptors. The cell ID, system ID
and communications and application parameters (e.g., group number, member number, announcer/repeater/listener assignments) are stored in the EEPROM 115c. The portion of the 5 EEPROM 115c storing the cell ID is "write-protected" that is, once programmed with the cell ID, it cannot be reprogrammed ` The inpuVoutput section of the cell comprises four subsections 107, 108, 109 and 110. Three of these subsections 107, .~ 108 and 109 have leads 103, 104, and 105 respectively for 10 communicating with a network and/or controlling and sensing devices connected to the cell. The remaining subsection 110 has a single select pin 106 which can be used to read in commands such as used to determine the cell's ID. As presently implemented, the subsection 110 is primarily used for timing and 15 counting. The input/output section is addressed by the processor through a dedicated address space, and hence, in effect appears to the processor as memory space. Each l/O subsection can be coupled to each of the subprocessors. This feature, along with -the multiprocessor architecture of processor 100, provides for 20 the continuous (non-interrupted) operation of the processor. The I/O section may be fabricated from well-known circuitry; the .~
1 32 627 ~
presently preferred embodiment is shown in Figures 17 through 23.
The cell of Figure 10 also includes an oscillator 112 and timing generator 111, the latter provides the timing signals 5 particularly needed for the pipelining shown in Figure 13.
- Operation at a 16mHz rate for the phases 1-4 of Figure 13 is . currently preferred, thus providing a 4mHz minor instruction cycle rate. Other well-known lines associated with the cell of ` Figure 10 are not shown (e.g., power).
All of the cell elements associated with Figure 10 are, in the preferred embodiment, incorporated on a single semiconductor chip, as mentioned.
B. PROCESSOR
The currently preferred embodiment of the processor 100 is 15 shown in Figure 12 and includes a plurality of registers which - communicate with two ALU's 102a and 102b. (Other processor architectures may be used such as one having a "register" based system, as well as other ALU and memory arrangements.) The address ALU 102a provides addresses for the memory 115 and for 20 accessing the 1/0 subsections. The data ALU 102b provides data for the memory and l/O section. The memory output in general is ''.
.
coupled to the processor registers through registers 146 to DBUS
223.
. The 16-bit ABUS 220 provides one input to the address ALU
102a. The base pointer registers 118, effective address registers 119 and the instruction pointer registers 120 are coupled to this bus. (In the lower righthand corner of the symbols used to `~ designate these registers, there is shown an arrow with adesignation "x4". This is used to indicate that, for example, the base pointer register is 4 deep, more specifically, the base pointer register comprises 4 16-bit registers, on~ for each processor. This is also true for the effective address registers ~`. and the instruction pointer registers.) The BBUS 221 provides up to a 12 bit input to the ALU 102a or an 8 bit input to the data ALU
102b through register 142. The 4 deep top of stack registers 122, `~ 15 stack pointer registers 123, return pointer registers 124 and instruction registers 125 are coupled to the BBUS.
-- The CBUS 222 provides the other 8-bit input to the ALU 102 . through register 143. The CBUS is coupled to the instruction pointer registers 120, the 4 deep top of stack registers 122, the -. 20 four carry flags 129, and the 4 deep CRC registers 130 and the 4 deep next registers 131.
.
. ~ ' : 1 32627~
The MBUS, coupled to the output of the memory, can receive data from the output of the ALU 102b through register 145b, or from the memory or l/O sections (107-110). This bus through register 1 46 and the DBUS 223 provides inputs to registers 118, 119, 120, 122, 123, 124, 125, 130, 131 and to the carry flags 129.
~! There is a 16-bit path 132 from the output of the address ALU 102a to the registers 120. The ALU 102b includes circuitry for performing CRC calculations. This circuitry directly connects with the CRC registers 130 over the bidirectional lines 133. The top of stack registers 122 are connected to the next registers 131 ;: over lines 138. These lines allow the contents of register 122 to be moved into registers 131 or the contents of register 131 to be moved into registers 122. As currently implemented, a bidirectional, (simultaneous) swap of data between these ~'7 15 registers is not implemented. Four bits of data from the output of the memory may be returned directly either to the instruction pointer registers 120 or the instruction registers 125 through lines 139.
The pipelining (registers 141,142, 143, 145 and 146) of data and addresses between the registers, ALU, memory and their respective buses is described in conjunction with Figure 13.
. .
1 32627~
The data in any one of the stack pointer registers 123 or any one of the return pointer registers 124 may be directly incremented or decremented through circuit 127.
Both ALU's 102a and 102b can pass either of their inputs to 5 their output terminals, can increment and can add their inputs.
ALU 102b in addition to adding, provides subtracting, shifting, - sets carry flags 124 (when appropriate), ANDing, ORing, exclusive ORing and ones complement arithmetic. The ALU 102b in - a single step also can combine the contents of next registers 131 10 and CRC registers 130 (through paths 222 and 133) and combine it with the contents of one of the top of stack registers 122 to provide the next number used in the CRC calculations.
Additionally, ALU 102b performs standard shifting and provides a ` special nibble feature allowing the lower or higher four bits to be 15 shifted to a higher or lower four bits, respectively. Also, ALU
102b performs a 3-of-6 encoding or decoding described in Section F.
In the preferred embodiment with a single semiconductor chip for a cell there are basic contact pads on the die for power 20 and ground and all the l/O pins A and B and the "read only" pin 106 (subsections 107, 108, 109 and 110, Figure 12). These contact . . , . .
.
.~
, .
; ,, ,, -~ :
1 32627~
pads are used for attachment to package pins for a basic inexpensive package.
In addition to the basic contact pads additional pads in the presently preferred embodiment will be provided with 5 connections to the ADBUS 224 and the MBUS 225 of Figure 12.
One control contact pad may be provided to disable internal memory. By activating the control contact the internal memory is - - disabled and the data over ADBUS and MBUS is used by the processors. This allows the use of a memory that is external to 10 the cell. It is assumed that the additional contact pads may not be available for use when the cell is in an inexpensive package.
These additional contacts may be accessed by wafer probe contacts or from pins in packages that have more than the minimum number of pins.
The cell as manufactured requires an initialization program.
At wafer probe time the external memory is used for several ;`- purpose, one or which is to test the cell. Another use is to `~ provide a program to write the cell ID into the EEPROM during the manufacturing process. Any necessary EEPROM instructions to 20 allow power up boot when the cell is later put in use may be added at this time. Initialization programs and test programs are well-known in the art.
1 32627~
C. PROCESSOR OPERATIC)N
In general, memory fetches occur when the ALU 102a provides a memory address. The memory address is typically a base address or the like on the ABUS from one of the base points 5 in registers 118, effective address registers 119 or instruction pointer register 120 combined with an offset on the BBUS from the stack pointer register 123, return pointer register 124, top of stack registers 122 or the instruction registers 125.
` Calculations in the ALU 102b most typically involve one of 10 the top of stack registers 122 (BBUS) and the next registers 131 (CBUS) or data which may be part of an instruction from one of the instruction registers 125.
While in the presently preferred embodiment, the processor operates with the output of the memory being coupled to the DBUS
15 223 through register 146, the processor could also be implemented with data being coupled directly to the input of ALU
102b. Also, the function performed by some of the other ~ registers, such as the effective address registers 119 can be performed by other registers, although the use of the effective 20 address registers, and for example, the CRC registers, improve the operation of the processor.
:
, ~,, - : .
' t 326275 In general, for memory addressing, a base pointer is provided by one of the registers 118, 119 or 120 with an offset :~ from one of registers 122, 123, 124 or 125. The address ALU
` 120a provides these addresses. Also, in general, the ALU 120b 5 operates on the contents of the top of stack and next register;
there are exceptions, for example, the instruction register may provide an immediate input to the ALU 102b. Specific addressing and other instructions are described below.
D. MULTIPROCESSOR OPERATION
The processor is effectively a multiprocessor (four processors) because of the multiple registers and the pipelining which will be described in conjunction with Figure 13. As mentioned, one advantage to this multiprocessor operation is that interrupts are not needed, particularly for dealing with input and 15 output signals. The multiprocessor operation is achieved without the use of separate ALUs for each processor. In the currently preferred embodiment, economies of layout are obtained by using two ALUs, (102a and 102b) however, only one of the ALUs operates at any given time. (Note the BBUS provides an input to both 20 ALUs.) Therefore, the multiprocessor operation of the present invention may be obtained using a single ALU.
~, .
;~,i t 326~
The processing system has four processors sharing an address ALU, a data ALU and memory. A basic minor cycle takes four clock cycles for each processor. The ALUs take one clock cycle and the memory takes one clock cycle. The minor cycles for each processor are offset by one clock cycle so that each processor can access memory and ALUs once each basic minor cycle. Since each processor has its own register set it can run independently at its normal speed. The system thus pipelines four processors in parallel.
Each register of Figure 12 is associated with one of four groups of registers and each group facilitates the multiprocessor operation and is associated with a processor t1-4) of Figure 13.
Each of the four groups includes one base pointer register, effective address register, instruction pointer register, top of 1~ stack register, stack pointer register, return pointer register, instruction register, CRC register, next register, and a carry flag.
Each related group of registers corresponds to one of the four ,~ processors. Each processor executes instructions in minor cycles, each minor cycle consisting of four clock cycles. During , 20 the first clock cycle a processor will gate the appropriate registers onto the ABUS, BBUS and CBUS. In the next clock cycle the ALUs will be active generating data from their inputs of the ' ,, r. - 5 8 ABUS, BBUS and CBUS. Memory or l/O will be active during the third clock cycle, with the address coming from the ALU 102a and data either being sourced by memory or the ALU 102b. The fourth and final clock cycle will gate the results from memory or the ALU 102b into the appropriate register via the D~US.
. A processor can be viewed as a wave of data propagating through the sequence described above. At each step the ; intermediate results are clocked into a set of pipeline registers.
By using these pipeline registers it is possible to separate the individual steps in the sequence and therefore have four steps executing simultaneously. The four processors can operate without interfering with one another even though they share the ` ALUs, memory, I/O and many control circuits.
The control of a processor including the pipelining is best . 15 understood from Figure 11. For each processor there is a 3 bit counter and an instruction register. These are shown in Figure 11 as counters 137a through 137d, each of which is associated with ~ one of the instruction registers 1 25a through 1 25d, respectively.
- Each of the instruction registers is loaded through the DBUS. As . 20 an instruction register is loaded, the instruction is coupled to a PLA 212. This PLA determines from the instruction how many - minor cycles are required to execute the instruction and a 3 bit f .~
. .
.
1 32627~
binary number is then loaded into the counter 113a or 113b or - 11 3c or 11 3d, associated with the instruction register 1 25a, or 125b, or 125c or 125d being loaded. For instance, for a CALL
instruction loaded into instruction register 1 25c, the binary 5 number 010 (indicating three minor cycles) is loaded into counter 137c. (Up to 8 minor cycles can be used for a given instruction, - ~ however, only up to 6 minor cycles are used for any of the instructions in the currently preferred embodiment.) The count value "000" is used to cause a new instruction to be fetched.
The count (e.g., 3 bits) in a counter and the instruction (e.g., 12 bits) in its associated instruction register from a 15 bit input to the PLA 136. These 15 bit inputs from each of the respective four sets of count registers and four sets of instruction registers are sequentially coupled to the PLA 136 as will be described. The 15 output of the PLA controls the operation of the processors. More :.`
,- specifically: lines 213 control data flow on the ABUS, BBUS and ~ CBUS; lines 214 control the ALU 102; lines 215 control the .^ memory; (and, as will be described later l/O operation of subsections 107, 108, 109 and 220) and lines 216 control data 20 flow on the DBUS. The specific outputs provided by the PLA 136 for a given instruction is best understood from the instructions set, set forth later in this application. The action taken by the . .
,:
1 32627~
processors to execute each of the instructions is described with the instruction set.
The outputs from the PLA on lines 213 are coupled directly to the devices controlling data flow on the ABUS, BBUS, and `~ 5 CBUS. The signals controlling the ALU are coupled through a one clock phase delay register 217 before being coupled to the ALU
via the lines 214. Since all the registers 217 are clocked at the same rate, the register 217 performs delay functions as will be described. Those signals from the PLA 136 used for memory control are coupled through two stages of delay registers 217 before being coupled to the memory, thus the signals on lines 215 are delayed for two clock phases related to the signals on lines 213. The control signals for the DBUS after leaving the PLA 136 are coupled through 3 sets of delay registers 217 before being coupled to the lines 216 and therefore are delayed three clock phases related to those on lines 213. The registers 217 are clocked at a 6mHz rate, thus when the PLA 136 provides output ; control signals for a given instruction (e.g., contents of instruction register 1 25a) the control signals during a first clock phase are coupled to lines 213, during a second clock phase, lines 214; during a third clock phase, 215; and during a fourth clock phase to lines 216. During the first clock phase of each , 1 326~7~
instruction cycle, the contents of the counter 137a and the - instruction register 12~a are coupled to the PLA 136. During the second clock phase, the contents of the counter 137b and instruction register 125b are coupled to the PLA 136 and so on 5 for the third and fourth clock phases.
Assume now that instructions have been loaded into the instruction registers 125a through 125d and the counters 137a through 137d have been loaded with the corresponding binary counts for the minor cycles needed to perform each of the 10 instructions. For example, assume that register 125a is loaded with a CALL instruction and that 010 has been loaded into counter 137a. During a first instruction minor cycle, 010 and the 12 bit instruction for CALL are coupled to the PLA 136. From this 15 bit input PLA 136 provides at its output all the control signals 5 needed to complete the first minor cycle of the CALL instruction (e.g., four clock phases) for the ABUS, BBUS CBUS, the ALU, the memory and the DBUS. Since the system uses pipelining multiprocessing, the control signals on lines 213 used to carry .~ out the first clock phase of the CALL instruction which is the 20 inputs to the ALUs.(During this first clock phase the other control lines are controlling the ALU, the memory and the DBUS of other processors, for different instructions in the pipelines.)During ' .
;
phase 2, the count in counter for 137b and the instruction in register 125b are coupled to the PLA 136. During phase 2, the signals on lines 213 now control the ABUS, BBUS and CBUS inputs to the ALUs for the second processor to carry out the instruction 5 contained in register 125b. During this second clock phase, the signals on lines 214 control the first processor and the ALU to perform the functions needed to carry out the second clock phase of the CALL instruction contained in register 125a. (Note a delay equal to one phase was provided by register 217.) Similarly, ~ 10 during the third phase, the signals on lines 213 control the ABUS, : BBUS, and CBUS for the third processor to carry out the instruction contained in register 125c; the signals on lines 21 ~
- control the ALU to carry out the instruction contained in register - 125b, and the signals on lines 215 control the memory to carry 15 out the instructions in register 125a for the first processor.
; And, finally, during the fourth clock phase, the instruction from register 125d, along with the count in counter 137d are coupled to the PLA 136. The signals on lines 213 control the ABUS, BBUS
and CBUS to carry out the instruction contained within register 20 125d fourth processor; the signals on lines 214 control the ALU
to carry out the instruction in register 125c for the third processor; the signals on lines 215 control the memory to carry , '' , - :
1 3 2 6 2 7 ~
out the instruction in register 125b for the second processor; and the signals on lines 216 control the DBUS to carry out the instruction in register 1 25a for the first processor.
After four cycles of the 16mHz clock the count in register 5 137a decrements to 001. Each register is decremented on the clock cycle following the use of the contents of the counters contained by the PLA 136. The input to the PLA 136 thus changes even though the instruction within register 1 25a is the same.
This allows the PLA 136 to provide new output signals needed for .. 10 the second minor cycle of the CALL instruction. These control signals are rippled through the control through the control lines 213, 214, 215 and 216 as described above. When the count in a counter reaches 000, this is interpreted as an instruction fetch for its associated processor.
Therefore, each of the four processors may simultaneously ` execute an instruction where each of the instructions has a different number of cycles. The control signals reaching the - imaginary line 219 for any given clock cycle represent control signals for four different instructions and for four different 20 processors. For example, the control signals associated with the first processor during a first cycle appear on lines 213; during a second cycle on lines 214; during a third cycle on lines 215; and 1 32627~) - during a fourth cycie on lines 216. The control signals needed by the second processor follow behind; those needed by the third and fourth processors following behind those used by the second processor.
The pipelining of the signals is illustrated in Figure 13.
The multiprocessor operation of the processor lO0 of Figure lO is shown in Figure 13 as four processors, processors 1, 2, 3 and 4.
Each one of the groups of registers is associated with one of the :~ processors. The four phases of a single instruction cycle are shown at the top of Figure 13. In Figure 13, registers 101 are used to indicate that the contents from the specific registers called for in an instruction are placed on the ABUS,BBUS and CBUS. The registers are 118, 119 and 120 on the ABUS; 122, 123, :! 124 and 125 on the BBUS; 120, 122, 129, 130 and 131 on the , 1 5 CBUS.
During a first phase, signals previously stored in the group I
., u registers (e.g., two of them) are gated from the registers onto the ABUS,BBUS and CBUS. While this is occurring, signals associated : ,~
; with the group 2 registers are gated from the registers 141, 142, j} 20 143 into the ALU 102a and 102b. This is shown in Figure 13 as : processor 2 under the first phase column. Simultaneous signals -~ are gated from registers 145a and 145b into the memory for ,,:
1 326~7~
group 3 registers for processor 3. And, finally, during this first phase, signals associated with the group 4 registers are gated from rPgisters 146 onto the DBUS. During the second phase, signals associated with a group I registers are coupled from the ~ ~ ALU to registers 145. The data associated with group 2 registers - are coupled to memory. The data associated with the group 3 registers is coupled from the register 146 onto the DBUS. Those associated with the group 4 registers are gated onto the ABUS, BBUS and CBUS . And, similarly, during the third and fourth phase 10 of each instruction cycle, this pipelining continues as shown in Figure 13, thus effectively providing four processors.
E. PROCESSOR INSTRUCTIONS
. In this section each instruction of the processor is set ` 15 forth, along with the specific registers and memory operations.
Lower case letters are used below to indicate the contents of a register. For example, the contents of the instruction register are shown as "ip". The registers and flags are set forth below with their correlation to Figure 12.
.
:, 1 32627~
IDENTIFICATION
ip instruction pointer ~14 bits) 1 20 - (fixed range of 0000 - 3FFF) ~: ~ (not accessible to ROM based programs) i r instruction register (12 bits) 125 (not accessible to ROM based programs) ~ 10 bp base page pointer (14 bits) 118 - (fixed range of 8000 -FFFF) (write only) ea effective address pointer (16 bits) 1 19 (not accessible to ROM based programs) sp data stack pointer (8 bits) 123 (positive offset from bp, grows down) r p return stack pointer (8 bits) (positive offset from bp, grows up) 124 i, . . .
, . .
, ,, , , :
,~ , - ':
''', , ~.
. .
- ~ . , . . : ~ . . -.
~'"'' . .
`` 1 32627~
.
tos top of data stack (8 bits) 122 -, next item below top of data stack (8 bits) 131 ..
`:
crc used as scratch or in 130 . CRC calculations (8 bits) , .` flags carry flags, (1 bit) 129 processor ID (2 bits) The top element of the return stack is also addressable as a register, even though it is physically located in RAM.
i , Instruction Table , 15 CALL 1 aaa aaaa aaaa Subroutine call ; .
CALL lib 0000 aaaa aaaa Library call 20 BR 0010 1 aaa aaaa Branch BRZ 0010 00aa aaaa Branch on TOS==0 .;
, ,, ,',: ' ` .' ' , .
,'~
-.
.
BRC 0010 11aa aaaa Branch on Carry set CALL interseg 0011 LLLL LLLL (Subroutine) - 5 0000 hhhh hhhh Two word instructions ,~j f' - LIT 0101 1ffhbbbb Constant op TOS
. ~
. LDC 0101 111 hbbbb Load Constant ALU 0101 OOefffff Top of Stack and NEXT
;, RET 0101 00111101 Return or Bit set in other instruction IN,OUT 0100 Owrr rrrr Read/Write l/O Registe i, ,~
-~" LD,ST bpla 0100 1waa aaaa Load, Store , .~ 20 LD,ST (bp~p)~a 011 p pwaa aaaa Load, Store LDR,STR r 0101 010wrrrr Load, Store CPU reg , "
., .
~ 69 ;, ,, .
" . .. ., .:
. .. ... - .
.
~ 3~6275 For each instruction, the operation, encoding and timing are set forth below in standard C language notation.
CALL Call Procedure ; Operation:
. -*rp++ = lowbyte (ip);~rp++ = hibyte (ip);
:' 10 ip = dest;
Encoding:
,~
intra-segment:
1 aaa aaaa aaaa dest = ip + a + 1; /~ displacement a is always negative ~/
inter-segment:
.. 20 0000 HHHH HHHH
. ~ .
dest = H:L; /~ 16 bit absolute address ~/
.
., ~; ' .
- . -' ' ' ' ' ' ~ , , r ~
1 32627~
library:
0000 aaaa aaaa dest = Ox8000+*(0x8001 + a); /~ table lookup call ~/
^~ Timing:
,~
, CALL type#clocks specific memory operation ..
intra-seg 3 2 ~rp++ = lobyte (ip) ''?~ 1 ~rp++ = hibyte (ip) 0 ir = ~(ip = ~dest) interseg 5 ~...
4 lobyte (ea) = ~ip++
. 3 hibyte (ea) = *ip 2 ~rp++ = lobyte (ip) i. 1 ~rp++ = hibyte (ip) ~ 20 0 ir = ~(ip = ~dest) . . .
Iibrary 4 .
;, .
, , , .
1 32627~
3 ~rp++ = lobyte (ip) 2 ~rp++ = hibyte (ip) 1 ip = dest 0 ir= ~ip BR Branch always Operatio n:
ip = dest;
1 0 Encoding:
,, - 0010 1 aaa aaaa ., , dest = ip + a + 1; /~ displacement a is sign extended ~/
: ~ 1 5 . Timing:
s #clocks specific memory operation ~ .
. 20 0 ir = ~(ip = dest) .. ..
, . .
^- 72 , .
~':
.
, ` ' , ~ 32627~
BRC Branch on carry .` Operation:
'' if ( CF ) ip = dest;
` else ip++;
. ,.
Encoding:
A `
`~ 10 001 0 01 aa aaaa dest = ip + a + 1; /~ a is sign extended ~/
Timing:
. .
#clocks specific memory operation 0 ir = ~(ip = dest) or 0 ir = ~(++ip~;
', 5 ..
~ 73 "
BRZBranch on TOS==0 Operation:
if (tos==0, tos=next, next= ~(++sp) ) ip = dest;
else ++ip;
Encoding:
, 10 001 0 00aa aaaa dest = ip + a + 1; /~ displacement a is sign extended ~/
15 Timing:
#clocks specific memory operation 2 1 tos = next;
next=~(++sp);
0 ir = ~(ip = dest) .
or 0 ir = ~(++ip) LDR Move register to TOS
(includes certain indirect, indexed memory reference) Operation:
~(sp--) = next;
if (reg) { next = tos; tos = reg }
else { next = bp+TOS or next= (bp+2p)+TOS }
1 0 Encoding:
01 01 01 00 rrrr reg = r /~ see table ~/
Timing:
#clocks specific memory operation (if (bp+p)+TOS) 5 4 lobyte(ea) = ~(bp+2p) 3 hibyte(ea) =~(bp+2p+1 ) (if reg, bp+TOS) 3 2 ~sp-- = next . 20 if (reg) next = tos;
if (reg) tos = reg else next=bp+TOS, ea+TOS
, . , . ~
' , :
o ir = *(++ip STR Store TOS to register (includes certain indirect, indexed memory reference) Operation:
if (reg) { reg = tos; tos = next; }
else ~ bp+TOS = next or (bp+2p)+TOS = next }
next = *(++sp);
Encoding:
0 1 0 1 0 1 0 1 r r r r reg = r /~ see table */
Timing:
~clocks specific memory operation (if (bp+p)+TOS) 5 4 lobyte(ea) = *(bp+2p) , .
15 3hibyte(ea) =*(bp+2p+1 ) if (reg, bp+TOS) 3 ~, 2 if (reg) reg = tos;
^ else bp+TOS,ea+TOS=next if (reg) tos = next;
20 next=*(++sp);
0 ir = *(++ip);
Register assignments 0 0 0 0 Flags CFx ID1 ID0 0 0 0 1 CRC low byte (high byte in TOS) 0 01 0 lowbyte (bp) If write ~/
next ("OVER" instruction) /~ read ~/
0 0 1 1 highbyte (bp) /~ write ~/
tos ("DUP" instruction) /~ read ~/
0 1 0 0 sp 0 1 0 1 rp 0 1 1 0 see RPOP, RPUSH
) 01 1 1 ~(bp+TOS) /~ indexed fetch,store ~/
1 0 0 0 ~(~(bp+0)+TOS) . /~ indexed indirect ~/
1 0 0 1 ~(*(bp+2)+TOS) /~ indexed indirect ~/
-"
' ' .
t 32627~
1 01 0 ~(~(bp+4)+TOS) /~ indexed indirect ~/
1 01 l *(*(bp+6)+TOS) /* indexed indirect */
RPOP pop return stack Operation:
~(sp--) = next;
next = tos;
tos = *rp--;
Encoding:
Timing:
#clocks specific memory operation ,. -~:
1 32627~
2 ~sp-- = next next = tos;
tos = ~rp--;;
0 ir = ~(++ip) RPUSH push tos onto return stack ~i Operation:
~(++rp)=tos;
tos = next;
: next=~(++sp);
` Encoding:
1~
Timing:
#clocks specific memory operation . .
..
1 32627~
2 ~(++rp) = tos;
tos = next;
next = ~(++sp);
0 ir=~(++ip) IN Move l/O register to TOS
Operation:
~(sp--) = next;
next = tos;
tos= reg;
Encoding:
01 00 00rr rrrr , Timing:
i #clocks specific memory operation 2 ~sp-- = next - ; . .. .
.' ' .
.
.
~ 326~75 next = tos;
tos = reg;
0 ir=~(++ip);
OUT Store TOS to l/O register Operation:
reg = tos;
tos = next;
next =~(++sp);
, Encoding:
01 00 01 rr rrrr . 1~
Timing:
#clocks specific memory operation 2 reg = tos;
tos= next;
, , ~ 3~6~7~
next = ~(++sp);
0 ir = ~(++ip);
LDC load constant (into TOS) Operation:
~sp-- = next;
next = tos;
tos = constant;
Encoding:
01 01 1 1 1 H bbbb 1~ if (H==0) constant . 0000:bbbb;
else constant. bbbb:0000 Timing:
. ~ .
#clocks specific memory operation 2 ~(sp--) = next;
next = tos;
,. , .. -.
1 3~ ~7 ~
tos 5 constant;
O ir=*(++ip) !
LD (bp+a) load from base page Operation:
~sp-- s next next = tos tos = *(bp+source);
Encoding:
,, 0100 1 Oaa aaaa ` 15 source = aa aaaa Timing:
#clocks specific memory operation - 20 2 *sp-- = next;
next = tos;
, .. .
,~ .
,,, , ~ ' tos = ~ (bp+source);
o ir=~(++iP) LD (bp+p)+a load indirect ( TOS with byte addressed by pointer at bp+offset then indexed by TOS) ; Operation:
, 10 ~sp-- = next;
next = tos tos = ~(~(bp+2p)+offset);
Encoding:
01 1 p pOaa aaaa offset = aa aaaa Timing:
#clocks specific memory operation ,~ .
4 lobyte(ea) = ~(bp+2p) 3 hibyte(ea) =~(bp+2p+1 ) .. ..
., .
..
-` ~ 3~6~7 ~
2 *sp-- = next;
next = tos;
tos=* (ea+offset) 0 ir z *(++ip) ST (bp+a) store into base page Operation:
.j , *(bp+dest) = tos tos= next;
next = *(++sp) Encoding:
15 0100 1 1 aa aaaa dest = aa aaaa . .
Timing:
#clocks specific memory operation 2 *(bp+dest) = tos;
,, , ~,............ .. ,., , ~ ....
, .
`: ~326~7~
tos = next;
next=~ sp);
0 ir=~(++ip) 5 ST (bp+p~+a store indirect ( TOS into byte addressed by pointer at bp+2p offset by a) ., Operation:
1 0 ~(~(bp+2p)+offset)=tos;
;- tos = next;
next = ~(++sp) :' Encoding:
01 1 p p1 aa aaaa offset = aa aaaa :: Timing:
~ 20 : #clocks specific memory operation . ,.
;::
";
,~, :
' 1 326~7~
4 lobyte(ea) = ~(bp+2p) 3 hibyte(ea) =~(bp+2p+1 ) 2 ~ (ea+off) =tos tos = next;
next=~(++sp) o ir=~(++iP) ALU Group ]
1 0 Operation:
if (r==1 ) '!,:, hibyte(ip) = ~rp--;
lobyte(ip) = ~rp--;
}
pipe = tos; /~ internal processor pipeline ~/
tos = tos op next;
switch (s) {
case 0: next= next; /~ typical unary op ~l case 1: next = ~(++sp); /~ typical binary op ~/
i }
,.~ .. .
' ~'' .
~f- 87 .., ., .
~ ' :
1 32627~
Encoding:
0 1 0 1 0 0 r f f f f f op = fffff /~ s equal to high order f bit ~/
s = (1==unary op), (0==binary op) Op Table:
code operation carry state 00000 tos + next arith carry 00001 tos + next + carry arith carry :~ 00010 next - tos arith borrow 00011 next - tos - carry arith borrow 00100 tos- next arith borrow : 01000 tos AND next unchanged ...
, . ..
', ,: . . ~ :
~ ~ .
. .
01001 tos OR next unchanged 01 01 0 tos XOR next unchanged 01 100 drop unchanged 01 101 swap-drop unchanged .
: 01111 CRC step unchanged 10000 asl (TOS) tos7 ` 10001 asr (TOS) 0 . 10 10010 rotate left(tos) tos7 10011 rotate right (tos) tosO
10100 tos parity(TOS) '; 1011 0 .- 15 10111 30f6 encode set if not valid ..
., ~, ., ~, .
~ .
s i s .`
~ 89 110 0 0 Isl (TOS) 11001 Isr (TOS) 110 10 shift left by 4 110 11 shift left by 4 11100 swap 1 1 1 01 tos (NOP) 11110 NOT(TOS) 11111 3Of6 decode Timing:
s#clocks specific memory operation ;' 2 (4) (if r==1 ) 3 hibyte(ip) = ~rp--; ) 1~ (if r==1 ) 2 lobyte(ip) = ~rp--;
`~ 1 tos = alu output 0 ir= *(++ip) 0 3 (5) (if r==1 ) 4 hibyte(ip) = ~rp--; ) (if r==1 ) 3 lobyte(ip) = ~rp--;
,- 2 tos = alu output .'~ .....
.
~ .
.
.: , ' . .
.
.
' t 326275 ~(++sp) = next 0 ir = ~(++ip) SWAP special case The exchange of TOS with NEXT is a special case of the ALU ops using the direct data path between TOS and NEXT. The NEXT register receives a cc - of the TOS via a pipeline register, prior to TOS being loaded with the conter of NEXT (non-simultaneous transfer).
.. 10 "~ NOP
~,.
:, - Operation:
. .
, 15 ++iP;
. -, Encoding:
~;~
..
short 0 01 0 1 0 0 0 0 0 0 0 ~ 20 - long 01 01 0 0 01 1 1 01 , ~.
~ 326275 Timing:
#clocks specific memory operation short (BR +1) 0 ir = ~(~+ip) long 2 1 tos = tos o ir = ~(++ip) ` 10 RET return from subroutine Operation:
-.~
.
hibyte(ip) = ~rp--lobyte(ip) = ~rp--.-~ ++iP;
;.
,i ~ Encoding:
. ~
s 20 0 1 0 1 0 0 1 1 1 1 0 1 . ., ~ .
~ Timing:
,,~ ....
, ., .
, .
.,- .
.
#clocks specific memory operation 3 hibyte(ip) = ~rp--f 2 lobyte(ip) = ~rp--tos = tos f 0 ir= ~(++ip) ~ LITERAL Group ]
f Operation:
tos = tos op constant;
f Encoding:
! 15 01 01 1 ffH cccc op = ff if (H==0) constant= 0000:cccc else constant = cccc:0000 f Op Table:
code operation carry state i , .
, , ,.
. . ~
, ~ " .
, : ,, .
~.
/ ~
t 326275 00 tos + constant arith carry 01 tos - constant arith borrow 00 tos ANl) constant 11 constant (see LDC) Timing:
#clocks specific memory operation : 2 . 1 tos = alu output 0 ir = ~(++ip) F. THREE-OF-SIX CIRCUITRY
As previously mentioned, the ALU 102b contains means for 15 encoding four bit nibbles into six bit words for transmission (encoder of Figure 14) and for decoding six bit words into the four bit nibbles (decoder of Figure 15). Both the encoder and decoder use ;'j hardwired logic permitting the conversion to be performed very quickly in both directions. Moreover, ~here is a circuit shown in , 20 Figure 16 to verify that each six bit word received by the cell is in . fact a three-of-six code, that is, three zeroes and three ones (Figure ,.
", g) . ., ., . . .
.. ~
: - :
.~ - ~ , ~ ., , i -, ' ' - ' .
'; . ,.,.' . ':
.~ , . . .
. . ~, . . ,,.; . . ., ~ ~
~ 32627~
Referring to Figure 14 the register 142 is illustrated with four bits of the register containing data D0 through D3. If the ALU is commanded to encode this data, the resultant six bits will be .- coupled into the latch register145b. To obtain the conversion shown5 in Figure 9, the Do bit is directly coupled into first stage of register 145b and becomes Eo, the encoded bit. Also, the bit D3 is directly coupled into the register and becomes Es Each of the remaining bits E1 through E4 are provided by the logic circuits 153 through 150, respectively. Each of these logic circuits are coupled to receive Do, 10 D1, D2 and D3. Each logic circuit contains ordinary gates which implement the equation shown within its respective block. These equations are shown in standard "C" language ( "&" = logical AND, "!"=
logical NOT, and "I" = logical OR.) These equations can be implemented with ordinary gates.
The decoder of Figure 15 is shown in a similar format. This time the six bits of the encoded data are shown in register 142.
The decoded four bits of data are shown in the register145. To implement the pattern assignment shown in Figure 9, the Eo bit is coupled directly to the register 145 and becomes Do. The Es bit 20 is coupled directly to the register145 and becomes the D3 bit.
Logic circuits 154 and 155 provide the bits D2 and D1, respectively. Circuit 154 is coupled to receive the bits Eo, E3, E4 ' ,:
-`` 1 32627~
and E~ while the circuit 155 receives Eo, E1, E3, and E5 (E2 is not used to provide the Do through D3 bits.) (Some of the six bit patterns are not used and others are used for synchronization and thus do not require conversion into a data nibble ) The circuits 5 154 and 155 are constructed from ordinary logic gates and implement the equations shown. The symbol ~ A " represents the exclusive OR function in the equations.
The circuit of Figure 16, as mentioned, verifies that the received six bit words do contain three zeroes and three ones.
;- 10 The encoded words are shown coupled from the top of stack register 122 into the two full adders, 157 and 158. These adder stages are contained within the ALU 102b. Each adder receives an X, Y and carry input and provides a sum and carry output. These ordinary adder stages are each coupled to receive one bit of the 15 encoded word as shown. (Any coupling of each bit to any input of address 157 and 158 may be used.) The carry outputs of the - adders 157 and 158 are coupled to the exclusive OR gate 159; the - sum outputs of the adders 157 and158 are coupled to the exclusive OR gate 160. The output of the gates 159 and 160 are 20 coupled to the input terminals of an AND gate 161. If the output of this AND gate is in its high state the word in the register 102 contains three ones and three zeroes. Otherwise, the output of ., ~
- . . ..~
. .
t 326275 the gate 161 is in its low state (abort condition). The incoming packets are checked to determine that each six bit word is valid, while it is decoded into the four bit nibbles.
IV. INPUT/OUTPUT SECTION
A. General The l/O section includes a plurality of circuit elements such as a ramp generator, counter, comparator, etc., which are interconnected in different configurations under software control. Examples of this are shown below for the analog-to-digital (A to D) and digital-to-analog (D to A) operations. These elements with their software configurable interconnections provide great flexilibity for the cell, allowing it to perform many tasks. The entire l/O section is preferably fabricated on the same "chip" which includes the processor.
. B. Buffer Section As shown in Figure 10 and previously discussed, each of the cells includes four input/output l/O subsections; three of the subsections 107, 108, and 109 each have a pair of leads, -, 20 identified as Pin A and Pin B. The fourth subsection 110 has a ~ single "read only" pin 106. Any of the four subsections can;. communicate with any of the four subprocessors. As shown in .. ..
., ., :
1 32627~
Figure 12, this is easily implemented by connecting the address bus (ADBUS) and the memory bus (MBUS) to each of the four l/O
subsections. Use of the MBUS through the register 146 to the DBUS allows the l/O subsections to communicate with the 5 processor registers.
Each Pin A and Pin B can receive and provide TTL level signals and is tristated. In the currently preferred embodiment, each pin can sink and source approximately 40milliamps (except for pin 106). All the Pin A's can be programmed to provide an 10 analog output signal and a digital-to-analog converter is included in three of the l/O subsections 107, 108 and 109 to provide an analog output on Pin B. An analog input signal on any of the Pin B's can be converted to a digital count since three of the l/O
subsections include A to D converters coupled to these pins. Each 15 pin pair (Pin A and Pin B) can operate as a differential amplifier for input signals, a differential receiver, and a differential transmitter and a differential voltage comparator. The l/O
subsections can be used to perform many different functions, from simple switching to, by way of example, having two pin ; 20 pairs coupled to drive the windings of a stepping motor.
The circuits shown in Figures 17-23 are repeated in subsections 107, 108 and 109. Those circuits associated with . .
.
t 326~7~j Pin A and Pin B (such as the buffer sections of Figure 17) are not fully contained in the l/O subsection 110. Only sufficient buffering to allow data to be read on Pin 106 is needed.
Referring to the l/O buffer section of Figure 17, outgoing 5 data is coupled to Pin A through the buffer 163. Similarly, outgoing data is coupled to Pin B through the buffer 164 after the data passes through the l/O control switch 165. This outgoing data, by way of example, is coupled to Pin A from the register 206 of Figure 23 through gate 208 of Figure 19. The control 10 switch 165 is used to enable outputs to Pin A through the buffer 163, when enable A (EN.A) is high (line 166). Moreover, the switch enables the output to Pin B when enable B (EN.B) is high ~- (line 167) and enables outputs to both pins (with the output to PinB being inverted) when enable RS-485 is high (line 168). The 15 outgoing analog signal to Pin A is provided through the switch 175 when the enable analog output signal is high.
Incoming signals to Pin A are coupled to one input terminal of the differential amplifier 169. The other terminal of this :~ signal receives a reference potential (e.g., 2.5 volts). This 20 amplifier also includes the commonly used hysteresis mode to prevent detection of noise. This mode is activated when the enable hysteresis (Pin A) signal coupled to amplifier 169 is high.
.
., .
, .
-~ 3~6~7~
The output of amplifier 169 is coupled to a transition detectioncircuit 171 which simply detects each transition, that is, a zero to one, or one to zero.
The inputs to Pin B are coupled to one terminal of a 5 differential amplifier 170 which may be identical to amplifier 169. The amplifier 170 receives the enable hysteresis (Pin B) signal. The other input to amplifier 170 (line 176) can be coupled to receive one of several signals. It can receive a DC signal used for voltage comparisons, a ramp which shall be discussed later, 10 the signal on Pin A for differential sensing, or a reference potential (e.g., 2.5 volts). The output of the amplifer 170 can be inverted through the exclusive OR gate 177 for some modes of operation. A transition detector 172 is associated with the Pin B
inputs, again to detect transitions of zero to one or one to zero.
15 C. I/O Counting/Timing Each of the cells includes a timing generator (RC oscillator) for providing a 16mHz signal. This signal is connected to a rate . multiplier 178 contained in the l/O section (Figure 18). The multiplier 178 provides output frequencies to each l/O
20 subsection. This multiplier provides a frequency fo equal to:
fo = 16MhZ X (LOADED VALUE) ' 216 : .. .
~' .
" ' ~ , .
t 326~7~
The loaded value is a 16 bit word loaded into a register of a rate multiplier 178. The rate multiplier comprises four 1 6-bit registers and a 16-bit counter chain. Four logic circuits allow selection of four different output signals, one for each 5 subsection. Two bus cycles (8 bits each) are used to load the 16 bit words into the register of the rate multiplier 178. As can be seen from the above equation, a relatively wide range of output frequencies can be generated. These frequencies are used for many different functions as will be described including bit 10 synchronization.
The output of the multiplier 178 in each of the subsection is coupled to an 8 bit counter 179. The counter can be initially loaded from a counter load register 180 from the data bus of the processors. This register can, for example, receive data from a ` 15 program. The count in the counter is coupled to a register 181 and to a comparator 182. The comparator 182 also senses the 8 bits in a register 183. The contents of this register are also -~ loaded from the data bus of the processors. When a match between the contents in the counter and the contents of register 20 183 is detected by comparator 182; the comparator provides an event signal to the state machine of Figure 19 (input to .j .
multiplexers 190 and 191). The contents of the counter 179 can be latched into register 181 upon receipt of a signal from the state machine (output of the execution register 198 of Figure 19).
The same execution register 198 can cause the counter 179 to be loaded from register 180. When the counter reaches a full count 5 (terminal count) a signal is coupled to the state machine of Figure 19 (input to multiplexers 190 and 191).
.
D. I/O CONTROL AND STATE MACHINE
Referring to Figure 19, the processor MBUS communicates 10 with registers 1~5 and 186 both of which perform masking functions. Three bits of the register 185 control the selection of one of the five lines coupled to the multiplexer 190; similarly, 3 bits of the register 186 control the selection of one of the five lines coupled to the input of the multiplexer 191. The output of :' 15 the masking registers 185 and 186 are coupled to a multiplexer 187. The five bits from the multiplexer 187 are coupled to a register 198. Each of these bits define a different function which is, in effsct, executed by the state machine. Specifically, the bits control load counter,latch count, enable ramp switch, pulse 20 Pin A" and pulse Pin B.
The multiplexers 190 and 191 both receive the terminal count signal from counter 179 of Figure 18, the compare signal ~ .. -.
from comparator 182, the ramp start signal from the ramp generator 200 of Figure 20, and the transition A and B signals from the transition detectors 171 and 172, respectively of Figure 17. The one bit output from each of the multiplexers 190 and 191 5 is coupled to an OR gate 188. This OR gate is biased in that if an output occurs simultaneously from both multiplexers 190 and 191, priority is given to multiplexer 190. The output of the multiplexer 190 controls the multiplexer 187 with the signal identified as "which event". This signal is also stored in the 3x3 10 first-in, first-out (FIFO) buffer 199. This signal indicates which MUX 190 or 191 has received an event and this data is stored along with the inputs to Pin A and Pin B (Figure 17) in the FIFO
1 99 .
The state machine for each of the l/O subsections 15 comprises 4 D-type flip-flops connected in series as shown in Figure 19 within the dotted line 189. The flip-flops 194 and 196 receive the 8mHz signal whereas the flip-flops 193 and 195 receive the complement of this timing signal. The clocking signal (CLK) is obtained from the Q output of the flip-flop 194 20 and is coupled to register 198 and FIFO 199. The clear signal received from the Q terminal of flip-flop 196 is coupled to the register 1 98.
, .. .
1 32627~
In operation, the masking registers 185 and 186 are loaded under software control. The bits from register 185, for instance, cause the selection of one of the input lines to multiplexer 190, for example, terminal count. Then the circuit of Figure 19 waits 5 for the signal terminal count. When the signal terminal count occurs the state machine begins operating and the five bits of data from register 185 are connected through multiplexer 187 into register 198. The state machine causes an output to occur on one of the lines from register 198 causing, for example, a pulse 10 to be generated on pin A. Similarly, a word in register 186 can be used to cause, again by way of example, the counter to be loaded.
The flip-flops 203 and 204 are clocked by the output of register 198. These flip-flops allow the output signal to be controlled. The OR gate 208 permits data from a shift register 15 206 of Figure 23 to be coupled to Pin A. This register is discussed later.
The low order 6 bits of the ADBUS are input to decoders in the l/O subsections 107, 108, 109 and 110 of Flgure 12. Two of . the bits are used to select a specific l/O element and the rest are 20 decoded to control an operation. The PLA 136 of Figure 11 has generalized outputs 215 connected in parallel to all l/O
subsections 107, 108, 109 and 110 to select the ABUS clock cycle :
, ::,.. , :
.
1 32~75 for data to be used for controlling operation of the l/O
subsections.
E. ANALOG TO DIGITAL AND DIGITAL TO ANALOG
CONVERSION
Referring first to Figure 20, the l/O subsystem includes a ramp generator 200 which continually generates ramps of a known period. The output of the ramp generator is buffered through buffer 201 and selected by switch 202. The switch, as will be described, is selected at some count (time) following the start of each ramp, thereby coupling the same potential to the capacitor 203. This capacitor becomes charged and potential is coupled through buffer 204 to Pin A when the switch 175 is closed. (Switch 175 is shown in Figure 17.) The switch 202, ; capacitor 203, and buffer 204 act as a sample and hold means.In Figure 21 several of the circuit elements previously described have been redrawn to describe how a digital to analog : conversion occurs and to show how the circuit elements of thel/O subsection can be reconfigured through software by the l/O
control and state machine of Figure 19 to perform different functions.
For a digital to analog conversion an appropriate frequency (fo) is selected from the rate multiplier 178 or counter 179 of ' 1 326~75 Figure 18, which corresponds to the period of the ramps being generated by ramp generator 200 (Figure 21). A digital value which corresponds to the desired output analog signal is loaded into the register 183. When a ramp begins the ramp start signal 5 is coupled through the state machine 189 of Figure 19 (for example, through the rnultiplexer 190) and the flip-flops). This causes the counter 179 to be cleared (e.g., all zeroes). The fo signal then counts into counter 179. The comparator 182 then compares the contents of the counter179 with the contents of 10 register 183. When the two words are the same, the compare signal is applied through multiplexer 191 again causing the state machine to be activated as indicated by "SM1~, 189 and the switch 202 of the sample and hold means to close. For each ramp generated by the ramp generator, the ramp switch 202 is closed 15 (e.g., for 500 nanoseconds) causing the capacitor 203 to be charged to a DC voltage which corresponds to the digital number placed in register 183.
One manner in which the A-D conversion can be performed is shown in Figure 22. The input analog signal is applied to one 20 input terminal of the differential amplifier 170. The ramp is applied to the other terminal of the amplifier 170. Initially, when the ramp is started, the state machine 189 causes the , . .
' -1 326~7 ~
counter 179 to be loaded from register 180 (e.g., all zeroes). The counter is clocked at a frequency (f~ suitable to the period of the ramps. When the transition detection 172 detects that the potential on Pin B and the ramp have the same potential, the state 5 machine 189 causes the count in the counter 179 to be latched into latch 181. The digital word in latch 181 corresponds to the DC potential on Pin B, thereby providing the analog to digital conversion.
F l/O COMMUNICATIONS
As previously discussed, for instance, in conjunction with Figure 1, each cell can transmit data over communications lines or other links. The cells in a subchannel transmit data at the same rate typically determined by the communications link being employed, for exarnple, 10K BPS in a noisy environment such as 15 for power lines. in the currently preferred embodiment, the cells do not have crystal oscillators but rather rely upon RC
oscillators. The iatter are not particularly stable and frequency variations occur both with temperature and as a result of processing variations. Moreover, there is no synchronization 20 provided between cells, thus, each cell must provide synchronization to the incoming data in order to properly read the data. One feature of all cells is that they detect and store the , ' frequency of the incoming data and when acknowledging a packet they can transmit at the frequency that the original packet was transmitted. This reduces the burden on cells to synchronize when they are receiving an acknowledgement packet.
Refarring to Figure 23 during the hunt mode, an l/O
subsection is hunting for data. During this mode, the rate multiplier provides a frequency (fO) to the counter 179 and a number is loaded into register 183 from the MBUS. Matches occur and are detected by comparator 182 at a frequency corresponding 10 to the expected incoming data rate. Specifically, the terminal count of counter 179 is synchronized to the transitions. As indicated by the dotted line 201, the processor continually searches for transitions from the transition detectors 171 and - 172 of Figure 17. When transitions occur, the processor 15 determines whether the transitions occurred before or after the terminal count and then adjusts the frequency (fO) until the terminal count occurs at the same time that the transitions are detected. This frequency is the shifting rate for the shift register 206. (The steps performed by the processor are shown in 20 Figure 23 as blocks 210 and 211.) The number loaded into register 183 provides a phase shift between the time at which transitions occur and the ideal time to shift data in the register 206. This prevents the shifting of data during transitions. Note counter 179 is reloaded (e.g., all zeroes) each time it reaches a terminal count.
When bit synchronization occurs, rate needed for the 5 synchronization (16 bit word) is stored within the processor memory and used to set the transmit frequency when acknowledging the packet for which the rate was developed. This stored bit rate as discussed later is used in the contention back-off algorithm allowing slot periods (M) to be matched to the last 10 received bit rate.
The comparator output is used as a shift rate for a six bit shift register 206. During the hunt mode, the data from Pin B is continually shifted through register 206. The preamble to a packet as shown in Figure 9 (010101-bit synch) is shifted along 15 the shift register 206 and the shifting rate adjusted so that synchronization/lock occurs. When the packet beginning flag appears (nibble synch-101010) the last two stages of the register 206 will contain ones and this will be detected by the AND gate 207. A binary one at the output of gate 207 ends the 20 hunt mode and provides the nibble synchronization. When this occurs, the data is clocked out of the shift register (6 bits) into a data latch 235 and from there the data can be clocked into the ', - ~' '' " ' ' , ' ' ~, -. ' :, ' ~ 3~6~7 ~
processor and converted into 4 bit nibbles. Another circuit means is present to detect all zeroes in the shift register 206. When this occurs, the processor and shift register return to the hunt mode. The number loaded into register 183 provides a phase shift 5 between the time at which transitions occur and the ideal time to shift data in and out of the register 206. This prevents the shifting of data during transitions.
Data which is to be transmitted is transferred into the data register 205. (Note only 6 bits representing a four bit nibble are 10 transferred into the data register 205.) These 6 bits are then transferred into the shift register 206 and shifted out at the shift rate. As mentioned, if the packet being shifted out represents an acknowledgement, the shift rate corresponds to the rate of the incoming data. If the outgoing packet on the other 15 hand is being sent to several cells, the shift rate is the nominal shift rate for the transmitting cell.
(Note that in Figure 23, data is shown leaving the register to only Pin A. For differential modes, the complement of Pin A is driven onto Pin B - and other variations are possible.) :' G. UO REGISTERS AND RESOURCE SHARING
Each l/O subsection has a number of registers which have bidirectional connections to the MBUS. These registers are in the l/O subsections 107, 108, 109 and 110 of Figure 12. The reading 5 and writing of these registers under processor program control configures the l/O subsystems for proper operation. Figure 12 illustrates th~ four l/O subsections 107, 108, 109 and 110 and shows the connections to the low eight bits of the MBUS and the low six bits of ADBUS. Two ADBUS bits select one of the four l/O
10 units and the remaining four bits are decoded to select one of the l/O control and status registers (described below) of that subsection. There are two lines from the PLA 136 of Figure 11 to control the action of the l/O subsections. One line is "Read" and the other line is "Write". When appropriate these lines are active 15 on phase 3 of the clock cycles.
The l/O registers, functions and bit definitions are described below:
WRITE REGISTERS: (Controlled by the "Write" line).
20 Event 0 Configuration Register:register, masking, 185 Figure 19:
Bit 0: Upon event Toggle pin A
Bit 1: Upon event Toggle pin B
Bit 2: Upon event Latch 8 bit count Bit 3: Upon event close Ramp switch (momentary on) Bit 4: Upon event Load 8 bit counter Bits5-7: Input Multiplexer: MUX 190, Figure 19.
000 Transition on pin A
0 01 Transition on pin B
0 10 Terminal Count event 01 1 Count Compare event 1 0 0 Ramp start event 1 01 Pin B compare event 10 Event 1 Configuration Register: masking register 186,Figure 19;
Bit 0: Upon event Toggle pin A
Bit 1: Upon event Toggle pin B
Bit 2: Upon event Latch 8 bit count Bit 3: Upon event close Ramp switch (momentary on) Bit 4: Upon event Load 8 bit counter Bits5-7: Input Multiplexer: MUX 191, Figure 19 0 0 0 Transition on pin A
0 01 Transition on pin B
01 û Terminal Count event 011 Count Compare event 10 0 Ramp start event 1 01 Pin B compare event I/O REGISTERS AND RESOURCE SHARING
8 Bit Counter Load Register: Counter load register 180;
Figure 18 Bits 0-7 = count . 30 Write Communications Data Out REgister: data register 205, Figure 23;
Bits 0-7 - data .
Write Communications Configuration Register: (not shown) 36 (loaded from MBUS) Used to configure the communications subsys~em for ., "-............. .. .
, , 1 32627~
transmii and receive functions.
Bit 0: 0 = Receive, 1 = Transmit Bit 1: NOP
B it 2: NOP
Bit 3: Shift Register enable Bit 4: Enter Hunt Mode Bit 5: NOP
Blt 6: NOP
Bit 7: NOP
Output Configuration Register 0: (not shown) (loaded from MBUS) Used for setting analog and digital pin configurations.
Bit 0: Enable pin A analog sut Bit 1: Enable pin A digital out Bit 2: Enable pin A pullup Bit 3: Enable pin A pulldown Bit 4: Enable pin B inversion Bit 5: Enable pin B digital out Bit 6: Enable pin B pullup Bit 7: Enable pin B pulldown Output Configuration Register 1: (now shown) (loaded from MBUS) Used for enable and compare functions.
Bit 0: Enable 8 bit counter Bit 1: Compare pin B to TTL reference Bit 2: Compare pin B to adjustable D.C reference Bit 3: Compare pin B to Ramp voltage Bit 4: Compare pin B to pin A
Bit 5: Enable RS-485 driver Bit 6: Enable input hysteresis on pin A
Bit 7: Enable input hysteresis on pin B
Output Configuration Register 2: (not shown) (loaded from MBUS) Used for setting pin logic levels.
Bit 0: Execute, load 8 bit counter with value in 8 bit Counter Load Register .
- ` 1 326275 Bit 1: Set pin A to logic level 1 Bit 2: Set pin A to logic level 0 Bit 3: Set pin B to lo~ic level 1 Bit 4: Set pin B to logic level 0 Lower Half of Rate Multiplier Register: rate multiplier 178, Figure 18 Lower by~e of rate multiplier 10 Upper Half of Rate Multiplier Register: rate multiplier 178, Figure 1 8 8 Bit Compare Load Register: compare load register 183 Figure 18 Byte for comparison RFAD REGISTERS: (controlled by "Read" line);
Read Event FIFO: FIFO 199, Figure 19 Bit 0: 0=Event 1 occurred 1 =Event 0 occurred Bit 1: Pin A level during occurrence of event Bit 2: Pin B level during occurrence of event Read l/O Condition Register:
I/O Status:
Bit 0: Input pin A
. Bit 1: Input pin B
Bit 2: 1=ramp compare Bit 3: NOP
Bit 4: NOP
Bit 5: 1=FIFO has data 0-FIFO empty .. 8 Bit Counter Latch: register 181, Figure 18 Count Byte . .
.:
~ 326~75 Communications Data Register; data latch 235, Figure 23 Data Byte Communications Status Register: (not shown) (reads onto MBUS) Bit 0: Receive mode: 1 =data available in shift register Transmit mode: O=transmit latch ready Bit 1: 1=in Hunt Mode from Fi~ure 23 .
, . ~ .
1 32627~
RESOURCE SHARING:
In the presently preferred embodiment there are five resources shared among the processors. They are the EEPROM and the four l/O
5 subsections. A hardware "Semaphore Register" (SR) and five words in RAM are used in controlling resource sharing. Figure 30 illustrates how the multiprocessors share common resources. The SR 95 of Figure 12 reads and writes to bit 0 of the MBUS.
Each RAM word will contain one state: Idle, Proc.#1, Proc.#2, 10 Proc. #3 or Proc. #4. A processor may interrogate a RAM location before assignment of resource to see if a resource is busy. If the resource is not assigned it will then access the Semaphore Register as described below. (Alternately, a processor may, skip the initial RAM
interrogation step and check the RAM location after it has accessed 5 the Semaphore Register). If the resource already busy the processor must clear the Semaphore Register to "0" and wait to try again. If the resource is "Idle" the processor assigns a resource by changing the state of the RAM Register from "Idle" to "Proc.#xN and then clearing the Semaphore Register to "0". When the processor is finished with 20 the resource, clears the RAM location to "Idle".
The SR is a one bit hardware register. During phase 3 of its respective cycle, if requiredj each processor may access the SR. In time sequence, this means that the processors may access the SR 295 s~
, once on one of four successive clock cycles (e.g., phases). The SR 295 is normally set to "0". In Figure 30, processors #1 and #3 are not requesting use of the SR 295 . Processor #2 is shown accessing the SR. If it receives a "0" at the besinning of the cycle it knows nothing 5 is being currently assigned or cleared and it se~s the appropriate RAM
location and if it contains "Idle" the processor inserts its "Proc. # thus assigning the resource and then "clears" the SR to "0". if the processor found that another processor was using the shared resource it does not assign its Proc. # and it then Nclears" the SR to "0". In this event it 10 must wait and try again.
Some operations such as those on the EEPROM may take many clock cycles so the processor should "assign" the RAM register but release the SR 295 while it is using the shared resource. When the processor is through with its operation using the assigned RAM
15 location it accesses the SR again until it finds a "0". It then "clears"
the RAM location to "idle" and "clears" the SR 295 to "on. Whenever a processor accesses the SR 295 and finds a "1" it leaves the SR 295 in the H1" state and must wait to try again.
In the example in Figure 30 Processor #4 is shown as needing a 20 shared resource. It interrogates the SR to find out if it is free. The processor uses a "test&set" operation and since the SR 295 was already H1" the test & set operation leaves the register with a "1". It . ' ~, , 1 32~275 must now wait and try again. It will keep trying until it gets access to the SR 295 and it finds the resource in the RAM word is ~idle".
V. PROTOCOL
A. CONTENTION IN GENERAL
In a typical application the communications network among ; the cells is lightly loaded and the cells will experience little or no contention delay. In the case of heavy traffic, the network can saturate. A heavy load will generate collisions and hence require - retransmissions. If retransmissions continue to collide, the network can possibly saturate. The contention backoff algorithm used in the network quickly spreads the traffic over a longer time period so that the system can recover from saturation. If the 1~ traffic is not spread over a long time period, the system will be unstable; it will not recover from saturation.
Access to a subchannel under contention conditions is regulated by two mechanisms, deferring and backing off.
Deferring is a collision avoidance technique used in group acknowledgements. Backing off is a traffic or load leveling technique.
~ .
1 ~
: ; .
r Deferring consists of counting free slots. When the number of free slots that the cell has seen equals the defer count, the cell transmits its packet in the next available slot.
When backing off, the cell increases its waiting time before attempting to retransmit a packet that has suffered a collision.
The amount of this increase is a function of the number of collisions or retransmissions. The algorithm implementing this function is called the backoff or contention algorithm.
The network uses a carrier sense multiple access method of 10 resolving contention for the communications channel. When a cell is ready to transmit it first listens to the communications channel. If it hears another cell transmitting, it waits for a clear channel. Once it detects a clear channel, a cell may delay before transmitting. The method of determining that delay is 15 deterrnined by the contention algorithm.
Time on the channel is measured in slots, each slot being M
bits at the most recently detected receive baud rate (i.e., shift rate). When a cell delays before transmitting, it waits an integral number of slots. When a cell detects a clear channel, it 20 may delay and then when it is ready to transmit, it attempts to transmit on a slot boundary. If a cell is transmitting a packet that has suffered a collision, it delays a time period determined 1 326~7~
by the backoff algorithm. Backoff delay is randomized uniformly over N slots, N is adjusted by the backoff algorithm. Its smallest value is 2 and it is adjusted upward by the backoff algorithm before each retransmission of a packet. Its maximum value is 5 210.
B. GROUP ACKNOWLEC~EMENT PACKET CONTENTION
A packet from a group announcer to a set of group listeners will cause each of those listeners to send an acknowledgement to 10 the announcer. Without a method of arbitrating contention among those acknowledgements, they will always collide. To avoid this problem, a built in reservation system for group acknowledgements is used. A listener cell uses its group member number to determine which slot to use for its acknowledgement.
15 Group member 5 will transmit its acknowledgement in the 5th free slot following reception of the original packet. The result is - that group member 1 will transmit its acknowledgement in the first slot following the original packet. Group member two will transmit its acknowledgement in the first slot following first 20 group member's acknowledgement. This process continues until the last group member has replied to the originai packet. If a group member does not reply and thus leaves its reply slot empty, the next group member replies in the next slot.
The contention and l/O state diagram is shown in Figure 24.
The following table sets forth the states and their descriptions.
Contention States State Name Description 10 0 Idle Time the slot boundaries while looking for receive data transitions.
8it Sync Establish baud rate synchronization with received signal.
2 Byte Sync Wait for the start of packet flag.
3 Rcv Receivethe packet.
4 IPG Delay Inter Packet Gap Delay. Delay for n bit times after the end of the last packet on the subchannel (whether this neuron transmitted it or received it).
5. Backoff Wait M slots where M was set by the last execution of the Delay backoff algorithm or by the ARQ protocol software.
25 6. Xmt Transmit a packet in the next slot.
7 Jam Transmit a jam pattern (all ones) for the jam period (specified in bit times). Execute the backoff - algorithm to set the backoff slot count.
,! .
; .
~ .
, Contention State Transitions State Event Action Next State 0. Idle A. Transitions Detected none 1. Bit Sync 0. Idle L. Packet to Xmt none 5. Backoff Delay 1. Bit Sync B. Sync Achieved none 2. Byte Sync 1. BitSync G. NoTransitions none 4. IPG Delay Byte Sync 2. Byte Sync F. Hunt Timeout none 1. Bit Sync 2. Byte Sync C. Starting Flag none 3. Rcv Detected ; 15 3. Rcv E. Abort Detected none 1. Bit Sync 3. Rcv D. Ending Flag Set Pckt Rcvd Flag 4. IPG Delay 3. Rcv N. PacketToo Long none 1. BitSync 4. IPG Delay M. Delay Done none 0. Idle 5. Backoff J. Delay Done none 6. Xmt 6 Delay 5. Backoff A. Transitions Detected none 1. Bit Sync :î 25 Delay 6. Xmt 1. Collision Detected Calculate Backoff ; Delay 7. Jam 6. Xmt H. Xmt Done none 0. Idle ' 30 ` 7.Jam K. Jam Done none 5. BackoffDelay .
G. COLLISION DETEt:TlON
In the curlléntly implemented embodiment collision detection is not used. Ordinary circuits can be used to provide . . . .
this feature with the cells providing responses as set forth in IEEE802.3. Upon detecting a collision, the cell can transmit a jamming signal for one slot time to make sure that all cells on the channel detect the collision. It then ceases transmitting and 5 executes the backoff algorithm. The backoff algorithm adjusts the contention randomization interval. IEEE802.3 uses the number of collisions experienced by the packet to calculate the backoff interval. The cell network may not always have collision detection so the cell's backoff algorithm may use the protocol's 10 inferred collision to calculate the backoff interval. If the cell has collision detection, it detects a collision in the same slot in which it occurs and retries the transmission (after the backoff interval) .
For cells without collision detection where a collision 15 occurs, the cell discovers it when the protocol timeout period expires. If a cell is sending a packet to multiple destinations (the normal case), it infers a collision if at the end of the protocol timeout period, no replies have been received from any of the destinations. If even one reply is received, there was no collision 20 at the transmit point and the retransmission takes place without an increased delay due to backoff. The cell then executes the backoff algorithm just as it does with collision detection, using the inferred collision count. After the backoff interval, the cell transmits the packet.
Therefore, the difference between collision dstection and collision inference is in the length of time it takes the cell to discover that a collision has occurred.
D. BACKOFF ALGORITHM
The backoff algorithm used in the currently preferred embodiment is set forth in IEEE802.3 standard, a truncated binary exponential backoff. The backoff interval is an exponential function of the number of collisions (detailed or inferred) since the last successful transmission. An exponential backoff algorithm gives the system the stability it needs to recover from ` saturation conditions. By exponentially spreading out the load in a saturated system, the algorithm allows the system to recover.
Backoff interval in slots = R such that R = random number linearly distributed over the interval:
0 <R<2 EXP [min (10, n)]
where n . number of collisions.
When a cell has two transceivers attached, it transmits every packet via both transceivers. Since the transceivers access different subchannels, they will experience different load conditions. Each transceiver is treated as a separate subchannel and has its own backoff parameters (collision count and backoff interval). The backoff parameters are Nkept" by the cells, one set for aach transmission.
The random number for the backoff algorithm is generated by one of two methods: I. by a pseudorandom number generation algorithm seeded with the 48 bit cell ID (guaranteed to be unique d~ as discussed), 2. by running a counter and saving the low order bits when an external event is detected.
The slots are equal in durations to bit rate of the last received data. Note: if each cell used its internal bit rate, slot ` durations would vary from cell-to-cell.
E. CONTENTION TIMER
Packets that have multiple routes to a destination may experience a long contention delay via on0 route and a shorter delay while traveling simultaneously via another route. If that contention delay is allowed to be too long, the later packet could arrive after the destination's receive sequence number has cycled back to the same sequence number in the packet. A packet could .~ 20 thus arrive out of sequence without the ARQ protocol detecting it.
To prevent this type of error, each packet uses the contention timer field (Figure 6) that is decremented by the number of slots . . . .
.
1 32627~
that the packet has waited for contention at each hop in a multihop route. When the count reaches zero, the packet is discarded.
F. ARQ PROTOCOL
The cell uses a sliding window protocol with a window size of 1 and modulo 2 sequence numbering (equivalent to a stop and wait protocol). The link control mechanism is very similar to th~
H[)LC asynchronous balanced mode. The principal difference being that with 1 bit sequence numbering instead of acknowledging packets with the poll/final bit set, every information packet must have an acknowledgement.
Before the ARQ mechanism can work, a connection must be established between the two communicating devices (cell or ~; network control devices). The connection process is described in the "connection" section later in this application. The ARQ
mechanism only operates when the cell is in the connect state.
- The ARQ states may be considered as substates of the connect state.
When a cell transmits a message, it waits for a reply from . 20 the destination. If the cell does not receive an acknowledgement within a predefined time out period, it assumes that the message was iost and it transmits the message again.
,~
,~ .
1 32~27~
Two types of packet may be used to carry an acknowledgement, an acknowledgement-only packet or an information packet. The acknowledgement is carried in the receive sequence number of the packet. The acknowledgement-5 only packet has no message field and is identified by the ACKcommand in the link command field. An information packet does contain a message field and is identified by the INFO command in the link command field.
Figure 25 is the link level ARQ state diagram and along with 10 the following table, defines the various ARQ states.
- Stato Event Aotion Next Stet0 . 0. Idle Message to Send Build Packet 1. Idle 0. Idle Packet to Transmit Send Packet 1. Contontion 15 0. Idle Packet Received Process Packet 1. Idle !l 1. Contention Packet Transmitted Start Timer 2. Wait ACK
2. Wait ACK Timeout Stop Timer Build Packet 2. Wait ACK
2. Wait ACK Packet to Retransmit Retransmit Packet 1. Contention :: 2. Wait ACK ACK pckt Received or N Stop Timer 0. Idle retries 2. Wait ACK Non ACK pckt Received Process Packet 2. Wait ACK
A cell must store a transmit sequence number for each addressee with whom it communicates. An addressee can be a cell, a group, or a control device. For receiving, a cell must save .
1 326~75 the receive sequence number of each source from which it receives. A source can be a cell, a group, or a control device.
When a cell receives a message, it checks the CRC on the message. If the CRC is not valid, the cell does not reply to the 5 message. The cell receiving a message also checks the message's sequence number. If the sequence number indicates that this is a duplicate packet, the cell acknowledges the receipt of the packet to the sender but does not pass the packet to the application software.
The ARQ protocol uses a bit that means Nthis is a retransmission by the sender". A receiver will not acknowledge a duplicate message unless the message has its retransmit bit on.
The cell saves the sequence number for the last received message for each group for which it is a listener. It has a separate 1 bit 15 transmit sequence number and 1 bit receive sequence number for messages addressed with the cell address (used when communicating with control devices).
(:ell to cell communications is via group addresses.
; Direct addressing with cell addresses is used for network 20 control functions. The cell will be communicating with a grouping device or network controller in those cases. A cell can have only one conversation at a given time that uses cell ., addresses because it has provisions to store only one set of those sequence numbers.
; When a control device wishes to communicate with a cell, it opens communications by sending a packet with a connect 5 command in the link control field. That command initializes the sequence numbers. After receipt of that command, the cell will not accept messages addressed to it (via cell address) by ~ another control device until the conversation ends. The -- conversation ends when the control device sends the cell a 10 disconnect command.
:
The period of time that the cell waits for an ,' acknowledgement of a message depends on the type of routing used. In general, the cell allows enough time for the packet to . arrive at its destination, plus protocol processing time in the 15 destination cell and the transit time for the return packet carrying the acknowiedgement.
The protocol timeout period for multihop packets is also influenced by the collision count. Even in very noisy environments, it is more likely that the reason a packet failed to 20 reach its destination in time is due to a contention rather than a transmission error. When a packet is retried, it is assumed that the collision count is an indication of system load and the - , ' . ' ' .
1 326~75 expected contention delay for a multihop packet. The delay period for multihop packets is adjusted upward as a function of collision count. The timeout period is therefore a function of the transmission baud rate, the number of hops and the collision count.
G. LINK CONTROL COMMANDS
; Link control commands control the operation of the ARQ protocol and the link connection process (see next section). The link command field of a packet always contains a link command.
ARQ Protoçol Commands INFO Information Packet (requires acknowledgement) ACK Acknowledgement Only Packet (does not require -~ acknowledgement) Connection Control Commands COI~N Connect DISC Disconnect . Sl Set Initialization ; 20 ~D Exchange Network ûata - Reelies to Connection Control Commands CMDR Command reject ~ 25 RD Request Disconnect -` Rl Request Initialization UA Unnumbered Acknowledge . .
.
. , .
~ 326275 - Only packets with the ACK and INFO commands use sequence numbering. Th~
INFO packets have two sequence numbers, a transmit sequence number and the sequence number of the last packet received. ACK packets have both sequence number fields but th~ transmit sequence numb~r is ignored by the 5 destination.
Packets with commands other than ACK or INFO are called unnumbered packets. Unnumbered packets are acknowledged in a stop and wait fashion via a UA command. Unnumbered packets do not contain a message field.
H. CONNECTION CONTROL
Before a control device can communicate with a cell, it must establish a connection with the cell. Establishing a connection consists of initializing the sequence numbers and putting the control device and cell into a known state. The connection establishment and maintenance procedures are governed by state machines implemented in software.
1~ An announcer cell must establish a connection with each listener cell in its group. Only when the connections have been established may the announcer communicate with the listeners. Connections are controlled by a subset of the link control commands. Commands are issued by a primary station. A secondary station receives a command and sends a reply to the 20 primary. In a group, the primary station is the announcer. The listeners are secondaries. When a network control device communicates with a cell, tha control device is the primary, the cell is the secondary. The link -.
1 32627~
control commands and their responses are shown below. The INFO and ACKcommands are ARQ protocol commands; the rest are connection control - commands.
Primary Secondary Description Command Response INFO Information: valld only In connect state.
INFO Information: valid only In connect ~tate.
ACK Acknowled~ement: use sequence numbers in packet but do not update receive sequence number.
CMDR Command relect: sent only by Secondary in Connect State. Rebuild pckt and send It a~ain.
R I Reque~t Initiallzation: Init ~econdary.
disconnect secondary.
RD Request Dlsconnect: disconnect the seGondary.
DM Secondary Is In the Dlsconnect state ACK Acknowled~ement ` CMDR Command reject: sent only by secondary in connect state. Rebuild pckt and send It a~ain.
R I Request Inltializatlon: inlt secondary.
disconnect secondary. Connect secondary.
DM Disconnect Mode: Secondary is In the disconnect ?, state.
CONN Connect UA Unnumbered ACK:
CMDR Command reJect: sent only by Secondary In connect state retry CONN:
R I Request Inltlallzatlon: inlt secondary.
disconnect secondary connect secondary.
~- RD Request disconnect: send DISC.
DISC Disconnect UA Unnumbered ACK
CMDR Command reject: sent only by secondary in connect state. Retry DISC.
~ 326~7~
S I Set Inl1ializatisn CMDR Command reJec1: Sent only by -~ocondary In Connec1 State. Retry Sl.
UA Unnumbered ACK.
XND Exchan~e ID & Network data: Thi~ command is sent only in when the primary is In the disconnect state.
XND Exchan~ie ID & Network data: The secondary sends an XND response only If It is In the disconnect Qtate. If it receives an XND while in any other ~tate, the secondary responds wlth CMDR.
CMDR Command reject: sent only by secondary in conn~c1 state. Disconnec1 secondary; then try XND a~ain.
Tho connection state diagrams of Figures 26 and 27 refer to primary and secondary stations. The primary station controls the connection. The secondary can request that the state of the 20 connection change but the secondary cannot change the connection unless commanded to do so by the primary station.
PRIMARY STATION CONNECTION STATES
25 State Event Actlon Next State 0. Start Power Up Inltiallze 4. Walt Init q 1. Disconnect Connect Request Send CONN 2. Wait Connect 30 1. Disconnect Fatal Error or Rl Send Sl 4. Wait Init 1. Disconnect XND Process XND 1. Disconnect 1. Disconnect INFO, ACK Retry DISC 1. Dlsconnect 1. Disconnect UA, DM l~nore 1. Dlsconnect 1. Disconnect RD, CMDR Retry DISC 1. Dlsconnect 2. Wait Connect UA Reset Seq Nums 3. Connect 2. Wait Connect Fatal Error or Rl Send Sl 4. Wait Inlt ` 2. Walt Connect Nonfatal error, RD, or CMDR Send DISC 5. Wait Disc.
;
' `
1 32627~
2. Walt connecl INFO, ACK Send DISC 5. Walt Dlsc.
2. Wait Connect D M Re1ry CONN 3. Wait Conn0ct 2. Walt Connect ~ND S~nd DISC 5. Wait Dlsc.
2. Wal1 Connect Time out Re1ry CONN 2. Walt Connec1 3. Connect Fatal Error or Rl Send Sl 4. Wai~ Init.
3. Connec1 Nonfatal orror, RD, or disc. Send DISC 5. Wait Dlsc.
1 0 request 3. Connect DM Send DISC 1. Disconnec1 3. Connect CMDR, INFO,ACK ARQ Processin~ 3. Connect 3. Connec1 XND Send DISC 5. Walt Dlsc.
3. Connect UA Send DISC 5. Wait Disc.
4. Wait Inlt UA received Send DISC 5. Walt Dlsc.
4. Walt Inlt CMDR received Retry Sl 4. Wait Inlt 4. Walt Init INFO, ACK Retry Sl 4. Walt Inlt 4. Walt Init RD, DM,RI,XND Retry Sl 4. Wait Inlt 4. Wait Inlt Tlme out Re~ry Sl 4. Walt Inlt 5. Walt disc UA, DM 1. Disconnect 5. Wait dlsc Rl Send Sl 4. Walt Init 5. Wai1 dlsc Fa1al error Send Sl 4. Walt Inlt 5. Walt dlsc CMDR,RD,XND Retry DIS C 5. Walt Dlsc.
5. Walt D~sc INFO, ACK Retry DIS C 5. Walt Dlsc.
5. WaJt Disc Tlme out Re1ry DISC 5. Walt Disc.
SECONDARY STATION CONNECTION STATES
State Event Actlon Next State 0 Start Power Up Inltlallzatlon 3. Inltlallze 1. Dlsconnect CONN received Send UA 2. Connect 1. Dlsconnect Sl recelved Initlallzatlon 3. Inl~lallze Send UA
1. Dlsconnect Fatal Error Send Rl 4. Walt Inlt.
1. Dlsconnect XND Send XND 1. Disconnect 1. Dlsconnect INFO, ACK Retry DM 1. Dlsconnect 1. Disconnect DIS C Retry DM 1. Disconnect 2. Connect Sl received ` Initialization 3. Inltialize Send UA
2. Connect DIS C received Send UA 1. Disconnect -- t 326275 2. Connect Fatal Error Send Rl 4. Wail Inil.
2. Connect Nonfatal error Send RD 5. error 2. Connect INFO, ACK ARa Processln~ 2. Connect 2. Connect CONN Retry UA 2. Connect 2. Connect XND Send RD 5. Error 3. Initialize DISC received Send UA 1. Disconnect 3. Initlalize INFO ACK CONN Retry Rl 3. Inltlallze 3. Initialize S I Re1ry UA 3. Initlalize 3. Initialize XND Retry RD 3. Initialize 4. Walt Init. Sl received Initlalizatlon 3. Initialize Send UA
4. Wait Init INFO ACK Retry Rl 4. Wait Inlt 4. Wa~t Init DIS CXND CONN Retry Rl 4. Wait Init j 5. Error DISC received Send UA 1. Dlsconnect 5. Error Sl received Inltializatlon 3. Initiallze Send UA
5. Error INFO ACK Retry RD S. Error ; CONN XND
25 NOTE: Retries: A reply may be retried N times. The event that causes retry N+1 is defined to be a fatal error and causss initialization. The cell maintains one retry count and it is incremented when any reply other than INFO or ACK is retried. The retry count is cleared whenever a non-retry reply is sent to the - 30 primary cell.
I. ABORT SEQUENCE
A cell transmitting a packet can abort the packet by 35 transmitting an abort sequence instead of continuing to transmit 1 3~6275 th0 packet. The Abort sequence is a group of at least 12 ones transmitted in succession. A receiving cell identifies an abort from the code verifier of Figure 16. A receiving packet ~reats any 3 of 6 code violation as an abort. One result of this is that a link 5 idle condition results in an abort. If the link is idle (no transitions) for more than a bit time, the result is a code violation. When a cell receiving a packet detects an abort sequence, it discards the portion of the packet that it has clocked in and begins searching for a new packet preamble. The abort 10 sequence is also used for jamming after a collision is detected.
J. SYSTEM ID
Referring to Figure 29, themethod by which the 48 bit system ID is used within the packets is illustrated. Thirty-two bits of the system ID shown as field 251 is placed directly into 15 the packet as indicated by the field 255. The remaining 16 bits are used in the calculation of the packet CRC. Initially, the CRC
register begins with all ones as indicated by the field 252 at the start of the CRC calculation. Then the 16 bit field 250 of the - system ID is used in the CRC calculation to provide a 16 bit field 20 253. The field 253 is stored in the EEPROM and used as a preset CRC field ea ch time a packet CRC is calculated.
, ~
- . .
- . .
.
When a packet is to be transmitted once the preset field is stored, the stored CRC field is coupled to the CRC register. The 16 bit packet CRC field is calculated using this present field and hte other fields in the packet used to calculate the packet CRC. (All 5 fields except the contention timer field are used.) The other 32 bits of the system ID are transmitted within the packet.
; When a packet is received, the processor calculates a CRC
; for the received packet by first placing its stored CRC preset field o in its CRC register and then computing the packet CRC (again, the contention timer field is not uséd). If tha newly computed CRC
field does not match the field in the packet, it is assumed that the packet has been improperly transmitted or that the transmitted packet, if correct received, has a different system ID and thus should be discarded.
Vl. GROUPING DEVICE
The grouping device can take various forms and can be - realized with commercially available hardware such as a personal computer. These computers can be readily programmed to perform the various functions described in the application performed by the grouping device. For example, they can be readily programmed to provide the packets needed to communicate with the cells for grouping. Other functions such as the generation of the random 1 326~7~
number used within the packets can be generated with well-known programs.
: An Apple ll computer, for instance, may be used as a grouping device. The 48 bit system ID may be stored on a disk; or, a printed circuit card may be provided which engages one of the slots of the Apple ll computer, the card can contain the system ID
; which is taken from a cell such as cell 232 of Figure 28. As groups are formed, the assigned group numbers, member numbers, etc., can be stored on the disk or stored in an EEPROM on a card.
In Figure 28, the elements of a presently preferred grouping device are illustrated. They include a CPU 226 which may be an ordinary microprocessor. The CPU communicates with a memory which may comprise a RAM 227, ROM 228 and storage means 229 for storing the system ID. Where a floppy disk is used the system ID and program (otherwise stored in ROM 228 ) are stored on the disk, with the program being transferred to RAM for execution.
- A display means 230 such as a ordinary monitor is coupled to the CPU to provide a display to the user, for instance, the display can be used to provide lists of the groups with their ASCII
- 20 names. A keyboard 231 is used to allow commands to be entered into the CPU.
.
. . .
t 32627~
Ths CPU is shown coupled to a cell 232 with the cell being coupled to a network through transceiver 233. The cell 232 is part of the grouping devices and the cell's ID is used by the grouping devices as a system ID. Typical messages transmitted by 5 the computer to the cell are shown in Appendix B, for example, the message of assigning the destination cell to be an announcer in a designated group is a message generated by the grouping device.
The grouping device can comrnunicate directly with the call over one of the three pairs of leads which are coupled to the l/O
10 subsections or through the select pin which allows messages from the CPU 226 to be read to the fourth l/O subsection.
.~ _ Thus, a network for sensing, communicating and controlling which has distributed intelligence has been described. While in 15 this application a simple example of use of cells in a home environment has been described, it will be obvious to one skilled in the art that the disclosed invention may be used in numerous other applications. Appendix C to this application contains a list of some other applications in which the present invention may be 20 used.
1 326~75 Appendix A, Packet Examples Routing Types for Packet Examples Fully Addressed 2 Open Flooding 3 Restricted Flooding 4 Group Flooding NOTE: The packet sizes are in cel! memory bits (before 3-of-6 encoding). A packet on a communications subchannel, after conversion to 3 of 6 code, is 50% larger.
Single Hop Packet Format:
Preamble, 16 bits Flag, 4 bits Destination cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 1 (Fully Addressed) Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits ' .
1 3~6~75 Single Hop Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Destination Cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 1 (Fully Addressed) Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits l~l 1 3~6~75 Multihop Full Address Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Next Cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits s 1 (Fully Addressed) Cell Address List Address Count, 4 bits Addresses, 48 - 768 bits Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits 1'(~
.
. . , ;
1 3~6?7~) Multihop Full Address Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Destination Cell Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits ~ 1 (Fully Addressed) Cell Address List Address Count, 4 bits Addresses, 48 - 768 bits Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits :
- ~ .
1 326~75 Open Flooding Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 2 (Open Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 32 bits Flag, 4 bits 1 326~75 Open Flooding Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = Ail Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits= 2 (Open Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits .
':
..
1 32627~
Restricted Flooding Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits .
~.
.
.
1 32627~) Restricted Flooding Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits , 1~
1 32627~
Group Announcement Packet Format:
Preamble, 16 bits Flag, 4 bits System I D, 32 bits Group Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits s 4 (Group Flooding) Source Member Number, 8 bits Destination Member Number, 8 bits, (O = broadcast) Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits 1~
Group Announcement Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Group Address, 48 bits Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 4 (Group Flooding) Source Member Number, 8 bits Destination Member Number, 8 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits ~-` 1 326~75 Probe Packet Format:
Preamble, 16 bits Flag, 4 bits System iD, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message, 49 to 769 bits Message Type, 8 bits Message Contents, 48 to 768 bits (Route List) Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits I'~ O
Probe - Reply Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit : Command, 4 bits Network Control Routing Type, 4 bits = 3 (Restricted Flooding) Destination Cell Address, 48 bits Source Cell Address, 48 bits Message Field, ^~ Message Type 8 bits Message contents, Route List Encryption Check, 16 bits :: CRC, 16 bits ~ Flag, 4 bits 1~1 t 326275 Broadcast Command Packet Format:
Preamble, 16 bits Flag, 4 bits System ID, 32 bits Broadcast Address, 48 bits = All Zeros Contention Timer, 10 bits Contention Timer Checksum, 6 bits Hop Count, 4 bits Randomizer, 8 bits Link Control Retransmit Flag, 1 bit Rcv Seq, 1 bit Xmt Seq, 1 bits Unused, 1 bit Command, 4 bits Network Control Routing Type, 4 bits ~ 3 (Restricted Flooding) or 2 (Open Flooding) Source Address, 48 bits Message, 16 to 512 bits Message Type, 8 bits Message Contents, 8 to 511 bits Encryption Check, 16 bits CRC, 16 bits Flag, 4 bits Broadcast Command Reply Format:
NO REPLY
, Appendix B Message Types "
:`
Probe Function: Determine the best route from the announcer to the listener.
Source: Group Announcer Address Type: Cell Routing Method: Restricted Flooding Message Type: 2 (Number for 8 bit field) Message Content: Address Count (1 byte), (number of cell IDs in probe packet - this is the number of cells ;' rebroadcasted packet) Address List ., Probe Result ~ Function: report the address list in the first probe packet received by ~ the destination Cell.
-/~ Source: Cell previously addressed by a Probe message.
. Address Type: Cell Routing Method: Restricted Flooding . Message Type: 3 Message Content: Address Count t1 byte), Address List Assign Group Announcer Function: Assign the destination Cell to be an announcer in the designated group.
Source: Grouping Device Destination: Cell . Address Type: Cell or Group Member ;. Routing Method: Restricted Flooding or Group Flooding ' Message Type: 4 - Message Content: Group Number, Member Number : Deassign Group Announcer Function: Deassign the destination Cell from serving as an announcer in ' the designated group.
Source: Grouping Device : 153 ., .
~.- ' ' ' :
,, .
, ~ ` 1 32627~
Destination: Announcer Cell Address Type: Cell or Group Member Routing Method: Restricted Flooding or Group Flooding Message Type: 5 Message Content: none Assign Group Listener Function: Assign the destination Cell to be a listener in the destinated ~ group.
: Source: Grouping Device . Destination: Cell Address Type: Cell or Group Member Routing Method: Restricted Flooding or Group Flooding Message Type: 6 Messags Content: Group Number, Member Number Deassign Group Listener Function: Deassign the destination Cell from serving as a listener in the , designated group.
Source: Grouping Device Destination: Listener Cell , Address Type: Cell or Group Member , Routing Method: Restricted Flooding or Group Flooding Message Type: 7 Message Content: none Assign Group Repeater Function: Assign the destination Cell to be a repeater in the designated group.
Source: Grouping Device -, Destination: Cell .~ Address Type: Cell or Group Member ~ Routing Method: Restricted Flooding or Group Flooding .~ Message Type: 8 . Message Content: Group Number, Member Number Deassign Group Repeater Function: Deassign the destination Cell from serving as a repeater in the designated group.
Source: Grouping Device Destination: Group Repeater Cell Address Type: Cell or Group Member Routing Method: Restricted Flooding or Group Flooding /
.. . . '' f.- .
- ~ , Message Type: 9 Message Content: none Assign Repeater Function: Assign a Cell to act as a repeater. Used to assign Cells that are not normally allowed to be a repeater, i.e. a Cell with one transceiver on a nonradiated medium.
Source: Control device Destination: Cell Address Type: Cell Routing Method: Fully Addressed, Open Flooding, Restricted Flooding Message Type: 10 Message Content: none Shutup Function: Broadcast message telling all Cells to stop transmitting until commanded to resume.
Source: Control Device Destination: Cells Address Type: Broadcast or Cell Routing Method: Restricted Flooding or Open Flooding Message Type: 11 Message Content: none Report your Input Function: Command a Cell to report its input.
Source: Cell or Control Device Destination: Cell Address Type: Any Routing Method: Any Message Type: 12 Message Content: Input number (byte).
Report your Output Function: Command a Cell to report its output.
Source: Control Device or Cell Destination: Cell : Address Type: Any Routing Method: Any -; Message Type: 13 Message Content: Output number (byte).
Download Function: Download data or code Source: Control Device Destination: Cell Address Type: Any Routing Method: Any Message Type: 14 Message Content: Address, length, code Set communciation parameter Function: Set a Communication Parameter in the Cell Source: Control Device Destination: Cell Address Type: Any Routing Method: Any Message Type: 15 Message Content: Parameter number, value . .
Announcement Function: Announce Sensor Data :: Source: Group Announcer Destination: Group : Address Type: Group, Broadcast ` Routing Method: Group Flooding Message Type: 16 Messago Content: O - 255 (one byte) . ~
' l~
. ~ .
1 326~75 APPENDIX C
APPLICATIONS
CATEGORY SUBCATEGORY APPLICATION
General Sen~ing Functions Usaga Communlc~tlon Functlons Control Functions Agrlculture Crop Management Crop Sensor/Comm Irrlgatlon Ctrl/Comm Land Leveler Sensor Comm Pe~t Sensor/Comm (with cell IDs Identi~yln~ anlmals) LlvQstock Detector/Tracker Fsed Sens6/Ctrl/Comm Mllker Sense/Ctrl/Comm Welght Sensor/Comm Herder Slgnal Devlce Commerclal Banklng ATM Card Electronlc Mon-y Commerclal Cash R-glster Sense/Ctrl/Comm Elevator S-ns-/Ctrl/Comm Slot Machln- S-ns-/Ctrl/Comm V-ndlng Machln- Sens-/Ctrl/Comm Commerclal,Mlsc Dlaper Senaor/Comm Pag-r Ctrl/Comm Prot-chnlcs, Sensor Ctrl Stamp l D
Watch Ctrl/
Constructlon D-cay Sensor/Comm Poet S-nsor/Comm Energy Manag-ment Sensor S-nse/Comm Th-rmostat Ctrl/Comm Utlllty S-nsor/Comm V-nt Ctrl/Comm ` Securlty Lock S-nse/CtrllComm Smart K-ys (Serlal #) Communlcatlon Communlcatlons Cable Ellmlnatlon Channel Ctrl/Comm Network Con119uratlon Ctrl/Comm Cell to Anythlng Brldge Phone l D (Cell l D ) Phon- to C-ll Brldge ~5~
.
-- ~ 326275 Telemetry Ctrl/Comm Wirln~ Elimlnatlon Computsr SloW Da~a N~twork Network Archltecture Artlflcial Intelll~ence Con~l~uratlon Ctrl Copy Protectlon Parallel Processlng Nodes Perlpheral Cable Ellmlnatlon K-yboard Sense/Comm Mouso Ssnse/Comm Wlrlng Ellmlnstlon Develop System Emulator D-vlc-Consumer Appllances Ssnsor SensQ/Comm Swltch Sens-/Ctrl/Comm Consumer, Mlsc Detector/Tracker (Electronlc Serlal #) Low 3attery Detector Smart Lott9ry Tlcket Entertalnment Amusemant Park Ctrl'r Arcade Gama Ctrl'r Cable TV Access Ctrl'r Cable TV Sampb Ctrl'r CD Plsyer Ctrl'r Spaclal Ett-ct- Ctrl'r St~r-o Ctrl'r TV Ctrl'r VCR Ctrl'r Hom- Improvement Central Clook Sy-Curtaln Ctrl/Comm Door S-ns-/Comm Garag- Door Ctrl'r Intercom Intercom Ctrl'r Pool Ctrl'r SenseJCtrl/Comm Smoke/Flr- D-tector Wlndow S-ns-/Ctrl/Comm Pets D-t-ctor/Tracku (Electronlc Serlal #) P-1 Ctrl/Tralner Educatlon Educatlon, Mlsc In1-ractlv- Book Sens-/Ctrl/Comm T~st S-ns-/Comm En31neerln~ Data Acqulsltlon DAC/ADC
Instrumentatlon DAC/ADC
Swltch Sense/Ctrl/Comm Home Electrlcal Ll~ht Ctrl/Comm R0coptlcl- Sense/Comm/Ctrl 1~
---, ' . : ~ ' . ' ' ~
. .
.. . .
t 326~75 Swltch S~nse/CtrllComm All 10rms of sensln~
All forms of eontrol Energy Managemsnt Sensor Ssnse/Comm Th-rmostat Ctrl/Comm Utlllty Sen~or/Comm Von1 Ctrl/Comm Home Improvement Cgntral Clock Sys Curtaln Ctrl/Comm Door Sense/Comm Garage Door Ctrl'r Intercom Intercom Ctrl'r Pool Ctrl'r S-ns-/Ctrl/Comm Smoke/Flre Detector Wlndow Sense/Ctrl/Comm Securlty Lock S-n~e/Ctrl/Comm Smart K-y- (S-rlal #) Vlbratlon/Motlon S-nse/Comm ;` wlndow Sen~/Ctrl/Comm Sprlnkler Sys Tlmer Ctrl/Comm Valv~ Ctrl/Comm Wetn-ss Sense/Ctrl Industrlal Energy Managemsnt Sensor Sense/Comm Thermostat Ctrl/Comm - Utlllty Sensor/Comm ~`, Yent Ctrl/Comm Industrlal Equlpment 011 Drlll Sensor/Ctrl/Comm Power Load Sensa/Ctrl/Comm Utlllty Sensor/Comm Securlty Lock S-nse/Ctrl/Comm - Smart K-y- (S-rlal #) Vlbratlon/Motlon Sense/Comm Wlndow Sen~-/Ctrl/Comm S-curlty, Industrlal Copy Prot-ctlon Detector/Tracker (Electronlc Serlal #) P-r~onnel Sadg- I D
Law S-curlty, Law Copy Prot-ctlon I D Card (S-rlal #) Gun l D
PaJSport (Serlal #) Shopllft-r Detector Manufacturlng CIM Artltlclal Intelllgence Wlrlng Ellmlnatlon ,~
1~9 .
: . . ~`; -.
,~ , , . , .. ,, . . ... ~ , - 1 326~7~ --`
,, Production Ctrl Detector/Tracker (Electronic S-rial #) ~nventory Ssnse/Comm Procass Ctrl Llne Balanc-Production Automatlon Productlon Flow/Sense Robotlc~ Detector/Tracker ~EIectronlc Serial #) Robot Senne/Ctrl/Comm Medlcal Medical, Mlsc Blo-Feedbsck Blonlcs Handlcapped Intorfac-s Heart Pacer Implants Medlcal Alert Sense/Comm Medlclne Alert Sense/Comm Patlent Monltorlng Personal Dlspen~er Ctrl/Comm P-rsonal Monltors Prosthetlcs Mllltary Mllltary, Mlsc Copy Protectlon Damage Ctrl Sens-/Comm Detector/Trscker (Electronlc Serlal #) Personnel Badgs I D
Redundant Comm SDI Sense/Ctrl/Comm Sonna Buoy S-nse/Comm Spylng Sense/Ctrl/Comm Posltlon Sense/Ctrl/Comm Syst-m Dlagnostlcs Sense/Comm Wsr Gamo Monltor/Slm Wsapon S-nse/Ctrl/Comm Socurlty Lock S-ns-/CtrllComm Smart K-ys (S-rlal #) Vlbratlon/Motlon S-ns-/Comm Wlndow Sons-/Ctrl/Comm Sclentlflc W-ath-r/Earthquake/-tc s-nsor Transportatlon Automotlv- G-nsral senslng - G-neral communlcatlon Gon-ral control Antl-lock Breaklng Sys Complex Cable Ellmlnatlon Gaugo Ctrl In Dash Map/Locator Instrument Panel C~rl Llcense Plat- I D ~ Comm Llght Ctrl/Comm ' 1 (4 (~) .. . .
.
~ . , . -1 326275 ~"
, Regulator Sense/Comm Smart Keys (Serlai #) Swltch Sense/Ctrl/Comm System Diagnostlcs Sense/Comm Wirlng Ellmlnatlon Avlonlcs Antl-lock Breaklng Sys Complex Cable Ellmlnatlon Gauge Ctrl Instrument Panel Ctrl Llght Ctrl/Comm Regulator Sense/Comm Sensor Sense/Comm Swltch Sense/C~rl/Comm i~ System Dlagnostlcs Sense/Comm Wlrlng Ellmlnatlon Transportatlon, Mlsc Emergency Loca~or (ELT) Sense/Comm Trafflc Monltor/Ctrl Tr-1flc Slgnal Sense/Ctrl/Comm ~, Tpy/Hobby/Spo Gam- 3 D "Chlp Wlts" Sens-/Ctrl/Comm Blngo Card Sens~/Comm Gam- sens-/Ctrl/Comm Hobby Camera Sense/Ctrl/Comm , Hobby Klt Sense/Ctrl/Comm ~, Maglc Equlpment Sense/Ctrl/Comm .:
, Mlniatur- Traln Ctrl/Comm Remote Ctrl Sense/Ctrl/Comm Sport Emergency Locator (ELT) Sense/Comm Trap Lln~ Sensor Sport Acc-ssory S-nse/Ctrl/Comm Toy L-go Bot S-n--/Ctrl/Comm Medl- Interactlve Toy Sense/Ctrl/Comm 3 Anlmated Toy Sense/Ctrl/Comm , .
~' 22 - : .; -:: :
. : .
Claims
The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. A network for sensing, communicating and controlling having a plurality of cells which communicate with one another through packets:
a first plurality of said cells being coupled to sense conditions and for transmitting packets indicating a change in said conditions, said first plurality of said cells hereinafter referred to as announcer cells;
a second plurality of said cells being coupled to control objects in response to predetermined ones of said packets, said second plurality of said cells hereinafter referred to as listener cells;
at least one of said announcer cells and listener cells also performing the function of repeating at least some of said packets, hereinafter referred to as repeater cells;
a first group of cells being programmed with a first group identification number, said first group including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in said first group being programmed to perform a first group function;
a second group of cells being programmed with a second group identification number, said second group including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in said second group being programmed to perform a second group function;
said first group of cells communicating among themselves with first packets, said first packets being initiated by at least one of said announcer cells in said first group and acted upon by at least one of said listener cells in said first group;
said second group of cells communicating among themselves with second packets, said second packets being initiated by at least one of said announcer cells in said second group and acted upon by at least one of said listener cells in said second group;
whereby communication occurs among said cells in said first and second group to carry out said first and second group functions.
2. The network defined in Claim 1 wherein each of said announcer cells and listener cells are associated with one or more groups with each group being identified with a different group identification number, however, where each of said announcer cells announce one of said group identification numbers for only a single one of said groups.
3. The network defined by Claim 1 wherein one of said first plurality of cells in an announcer cell in two of said groups.
4. The network defined by Claim 1 wherein one of said second plurality of cells is a listener cell in two of said groups.
5. The network defined by Claim 1 or 4 wherein each of said cells is fabricated on a single silicon substrate.
6. The network defined by Claim 1 wherein each of said cells includes a unique cell identification number and a terminal for enabling broadcasting of said unique cell identification number.
7. A network for sensing, communicating and controlling having a plurality of cells which communicate with each other through packets:
a first plurality of said cells being coupled to sense conditions and for transmitting packets indicating a change in said conditions;
a second plurality of said cells being coupled to control objects in response to predetermined ones of said packets;
said network being organized into a plurality of groups, each of said groups being assigned a unique group identification number, and each of said groups including at least one of said first cells and at least one of said second cells, said cells in each of said groups being programmed to perform group functions, each of said group functions being a common task carried out by said cells in said group, the information needed to carry out said group function being programmed into and distributed among said cells in said group, said packets including one of said group identification number;
at least one of said cells being programmed to participate in carrying out of at least two of said group functions.
8. The network defined in Claim 7 wherein at least one of said packets includes a member number, a different one of said member numbers being assigned to each of said cells in each of said groups.
9. The network defined in Claim 8 wherein said packets include a system identification number.
10. The network defined in Claim 7 or 9 wherein each of said cells is fabricated on a single semiconductor substrate.
11. The network defined by Claim 7 wherein each of said cells includes a unique cell identification number and terminal for enabling broadcasting of said unique cell identification number.
1. A network for sensing, communicating and controlling having a plurality of cells which communicate with one another through packets:
a first plurality of said cells being coupled to sense conditions and for transmitting packets indicating a change in said conditions, said first plurality of said cells hereinafter referred to as announcer cells;
a second plurality of said cells being coupled to control objects in response to predetermined ones of said packets, said second plurality of said cells hereinafter referred to as listener cells;
at least one of said announcer cells and listener cells also performing the function of repeating at least some of said packets, hereinafter referred to as repeater cells;
a first group of cells being programmed with a first group identification number, said first group including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in said first group being programmed to perform a first group function;
a second group of cells being programmed with a second group identification number, said second group including at least one of said announcer cells, one of said listener cells and one of said repeater cells, said cells in said second group being programmed to perform a second group function;
said first group of cells communicating among themselves with first packets, said first packets being initiated by at least one of said announcer cells in said first group and acted upon by at least one of said listener cells in said first group;
said second group of cells communicating among themselves with second packets, said second packets being initiated by at least one of said announcer cells in said second group and acted upon by at least one of said listener cells in said second group;
whereby communication occurs among said cells in said first and second group to carry out said first and second group functions.
2. The network defined in Claim 1 wherein each of said announcer cells and listener cells are associated with one or more groups with each group being identified with a different group identification number, however, where each of said announcer cells announce one of said group identification numbers for only a single one of said groups.
3. The network defined by Claim 1 wherein one of said first plurality of cells in an announcer cell in two of said groups.
4. The network defined by Claim 1 wherein one of said second plurality of cells is a listener cell in two of said groups.
5. The network defined by Claim 1 or 4 wherein each of said cells is fabricated on a single silicon substrate.
6. The network defined by Claim 1 wherein each of said cells includes a unique cell identification number and a terminal for enabling broadcasting of said unique cell identification number.
7. A network for sensing, communicating and controlling having a plurality of cells which communicate with each other through packets:
a first plurality of said cells being coupled to sense conditions and for transmitting packets indicating a change in said conditions;
a second plurality of said cells being coupled to control objects in response to predetermined ones of said packets;
said network being organized into a plurality of groups, each of said groups being assigned a unique group identification number, and each of said groups including at least one of said first cells and at least one of said second cells, said cells in each of said groups being programmed to perform group functions, each of said group functions being a common task carried out by said cells in said group, the information needed to carry out said group function being programmed into and distributed among said cells in said group, said packets including one of said group identification number;
at least one of said cells being programmed to participate in carrying out of at least two of said group functions.
8. The network defined in Claim 7 wherein at least one of said packets includes a member number, a different one of said member numbers being assigned to each of said cells in each of said groups.
9. The network defined in Claim 8 wherein said packets include a system identification number.
10. The network defined in Claim 7 or 9 wherein each of said cells is fabricated on a single semiconductor substrate.
11. The network defined by Claim 7 wherein each of said cells includes a unique cell identification number and terminal for enabling broadcasting of said unique cell identification number.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA000616103A CA1326275C (en) | 1987-11-10 | 1991-06-25 | Network and intelligent cell for providing sensing, bidirectional communications and control |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US119,330 | 1987-11-10 | ||
US07/119,330 US4918690A (en) | 1987-11-10 | 1987-11-10 | Network and intelligent cell for providing sensing, bidirectional communications and control |
CA000582032A CA1318719C (en) | 1987-11-10 | 1988-11-02 | Network and intelligent cell for providing sensing, bidirectional communications and control |
CA000616103A CA1326275C (en) | 1987-11-10 | 1991-06-25 | Network and intelligent cell for providing sensing, bidirectional communications and control |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA000582032A Division CA1318719C (en) | 1987-11-10 | 1988-11-02 | Network and intelligent cell for providing sensing, bidirectional communications and control |
Publications (1)
Publication Number | Publication Date |
---|---|
CA1326275C true CA1326275C (en) | 1994-01-18 |
Family
ID=25672217
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA000616102A Expired - Lifetime CA1326274C (en) | 1987-11-10 | 1991-06-25 | Network and intelligent cell for providing sensing, bidirectional communications and control |
CA000616103A Expired - Lifetime CA1326275C (en) | 1987-11-10 | 1991-06-25 | Network and intelligent cell for providing sensing, bidirectional communications and control |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA000616102A Expired - Lifetime CA1326274C (en) | 1987-11-10 | 1991-06-25 | Network and intelligent cell for providing sensing, bidirectional communications and control |
Country Status (1)
Country | Link |
---|---|
CA (2) | CA1326274C (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112748675A (en) * | 2019-10-16 | 2021-05-04 | 重庆禾瑞佳森物联网科技有限责任公司 | Singlechip system compatible with multiple slave machines |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8031069B2 (en) | 2008-01-14 | 2011-10-04 | Oded Yair Cohn | Electronic security seal and system |
-
1991
- 1991-06-25 CA CA000616102A patent/CA1326274C/en not_active Expired - Lifetime
- 1991-06-25 CA CA000616103A patent/CA1326275C/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112748675A (en) * | 2019-10-16 | 2021-05-04 | 重庆禾瑞佳森物联网科技有限责任公司 | Singlechip system compatible with multiple slave machines |
Also Published As
Publication number | Publication date |
---|---|
CA1326274C (en) | 1994-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4941143A (en) | Protocol for network having a plurality of intelligent cells | |
US5034882A (en) | Multiprocessor intelligent cell for a network which provides sensing, bidirectional communications and control | |
US4947484A (en) | Protocol for network having a plurality of intelligent cells | |
US4955018A (en) | Protocol for network having plurality of intelligent cells | |
US4969146A (en) | Protocol for network having a plurality of intelligent cells | |
US5475687A (en) | Network and intelligent cell for providing sensing, bidirectional communications and control | |
US4939728A (en) | Network and intelligent cell for providing sensing bidirectional communications and control | |
US4969147A (en) | Network and intelligent cell for providing sensing, bidirectional communications and control | |
US5018138A (en) | Protocol for network having a plurality of intelligent cells | |
US5113498A (en) | Input/output section for an intelligent cell which provides sensing, bidirectional communications and control | |
CA1317651C (en) | Protocol for network having a plurality of intelligent cells | |
CA1309186C (en) | Input/output section for an intelligent cell which provides sensing, bidirectional communications and control | |
CA1326275C (en) | Network and intelligent cell for providing sensing, bidirectional communications and control | |
AU620073B2 (en) | Multiprocessor intelligent cell for a network which provides sensing, bidirectional communications and control | |
AU619514B2 (en) | Network for providing sensing communications and control | |
AU621581B2 (en) | Protocol for network having a plurality of intelligent cells | |
GB2244577A (en) | Cell for sensing and control network | |
DE8904521A1 (en) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MKEX | Expiry |
Effective date: 20110118 |