Apparatus for providing multiple controller interfaces to a standard digital modem and including integral conflict resolution
RELATED PATENT APPLICATION 
     The present patent application is related to U.S. patent application, Ser. No. 07/363,844, now U.S. Pat. No. 4,989,203, entitled &#34;APPARATUS FOR PROVIDING MULTIPLE CONTROLLER INTERFACES TO A STANDARD DIGITAL MODEM AND INCLUDING SEPARATE CONTENTION RESOLUTION,&#34; by T. Phinney, and to U.S. patent application, Serial No. 07/363,842, entitled &#34;APPARATUS FOR PROVIDING MULTIPLE CONTROLLER INTERFACES TO A STANDARD DIGITAL MODEM AND INCLUDING MULTIPLEXED CONTENTION RESOLUTION,&#34; by T. Phinney, both applications filed on even date herewith, and assigned to Honeywell Inc., the assignee of the present invention. 
     BACKGROUND OF THE INVENTION 
     This invention relates to a digital interface apparatus, and more particularly, to an apparatus for providing multiple controller interfaces to a standard digital modem, and includes an integral method of resolving conflicting outputs from the connected controllers. 
     In present communication systems utilizing a bus approach, which in particular conforms to IEEE standard 802.4-1989 section 10 (which is now also ISO DIS 8802/4 section 10-(1988)), each controller interfaces with a modem. In particular, controllers of the aforementioned communication systems could not share modems. Each controller interfaced with its corresponding modem. 
     Therefore, because of the relatively high cost of the modem, there is a need to reduce the number of modems employed in a communication system using the IEEE 802.4 standard. There is provided by the present invention an apparatus which permits multiple (token bus) controllers of the aforementioned communication systems to share a single modem. Further since the modem itself has an analog connection to a medium, there is created certain loads on the medium in terms of energy loading on the bus so that for a given system there is a limited number of ports for connecting the analog modem. By being able to share one analog modem across many digital controllers, there is effectively a multiplier placed in the system of how many devices can be connected. Without having to put repeaters in the analog line, a system is thereby created in which each analog port interfaces many digital controllers by sharing the modem. 
     A further feature of the present invention reduces the need to have fiber optic or coax cables to connect each device on the bus to every other device on the bus. In the present invention, because these signals are in the form of digital signals, printed wiring backplane or conventional multi-conductor ribbon cable and their associated connectors can be used for devices or modules within close proximity rather than having to utilize specialized fiber optic or coax connectors, and fiber optic or coax cables, respectively. Furthermore, the modem serves to isolate the devices or modules so that they can communicate with each other despite the presence of disabling faults elsewhere in the communications system. Also, for equipment within close proximity, the modems can be eliminated entirely (with a very minor modification), thereby reducing the cost, and still permitting the equipment to have the same interface as if the equipment were communicating remotely. 
     SUMMARY OF THE INVENTION 
     Therefore, in a communication system utilizing the IEEE 802.4 standard, there is provided by the present invention, an apparatus for providing an interface between multiple controllers and a single modem. The communication system which utilizes the present invention has a modem which provides a link to remote modems, each modem being connected by a common medium. The communication system further has a plurality of controllers, each controller connected to the modem via an interface apparatus. The modem and the controllers comply with a predetermined protocol. The interface apparatus of the present invention comprises a bus which provides a local medium to transfer signals between the controllers and the modem. A first interface unit, which interfaces the modem to the bus, implements a modem-associated multi-state state machine and responds to signals on the bus maintaining the predetermined protocol between the modem and the first interface unit. A plurality of second interface units interface a corresponding controller to the bus. Each second interface unit implements a controller-associated multi-state state machine which responds to signals on the bus and further responds to signals from the corresponding controller, each second interface unit maintaining the predetermined protocol between the second interface unit and the corresponding controller. Further, each second interface unit transmits onto the bus in a predefined cycle to resolve conflicts between controllers for access to the bus. 
     Accordingly, it is an object of the present invention to provide an apparatus which permits multiple controllers to share a single modem. 
     It is another object of the present invention to provide an apparatus which permits an increase in the number of devices that can be put on a given system without affecting the analog loading of a medium, and therefore the medium structure. 
    
    
     These and other objects of the present invention will become more apparent when taken in conjunction with the following description and attached drawings, wherein like characters indicate like parts, and which drawings form a part of the present application. 
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 shows a block diagram of a partial communication system of the prior art; 
     FIG. 2 shows a block diagram of a partial communications system including the apparatus of the present invention permitting multiple controllers to share a single modem; 
     FIG. 3 shows a functional diagram of the networks coupled to the apparatus of the preferred embodiment of the present invention; 
     FIG. 4 shows a functional diagram of the networks coupled to an alternative embodiment of the apparatus of the present invention; 
     FIG. 5 shows a block diagram of a part of the interface apparatus which eliminates the modem; 
     FIG. 6 shows a functional block diagram of the encoding of the controller transmissions by the interface apparatus of the preferred embodiment of the present invention; and 
     FIG. 7 shows a block diagram of an alternative embodiment of the present invention which includes a plurality of modems. 
    
    
     DETAILED DESCRIPTION 
     Referring to FIG. 1, there is shown a block diagram of a prior art, partial 802.4 communication system that has a single modem 10 and a single controller 11, one to one, and that there are signals that go from the controller 11 to the modem 10, and separate signals that go from the modem 10 to the controller 11. 
     Referring to FIG. 2, there is shown a block diagram of a partial communication system, including a single modem 10, a plurality of controllers 11, CONTROLLER A, CONTROLLER B, CONTROLLER C, . . . . Modem 10 is a standard 802.4 compatible modem connected to a medium 12, and controllers 11 are 802.4 compatible token bus controllers 11 being standard components available in the marketplace. 
     An apparatus, interface 20, of the present invention includes interface A (IFA) 22 and interface B (IFB) 24, which provides the interface for two (multi-wire wide) buses 26, 28, the first bus 26 being sourced by any or all of the controllers 11, and the other (second bus 28) being sourced by the modem 10. Therefore, there are two networks 26, 28 which replace the two sets of point-to-point lines of the prior art modem-controller pairing of the 802.4  system of FIG. 1. Network 28 is unidirectional; network 26 is unidirectional with respect to interface A 22 but is bidirectional with respect to interface B 24. Instead of one-to-one modem controller pairing, there is provided by the apparatus of the present invention, an N-to-1 (and N-to-N) network 26, and a 1-to-N network 28, having N-controllers and one modem. 
     The logic of IFB 24 goes on the controller side of the networks (i.e., pair of networks) 26, 28, and the logic of IFA 22 goes on the modem side of this pair of networks 26, 28, such that the controller 11 will only see valid signals (i.e., signals that are valid according to the 802.4 standard), and such that the modem 10 will only see signals that are valid according to the 802.4 standard. Any controller 11 and any modem 10 that meets this standard (i.e., the 802.4 standard, and in particular the interface specification of section 10 (1989)) will operate correctly in the &#34;sharing&#34; configuration of the system of FIG. 2 with the interface 20. 
     The IEEE Standard 802.4 contains constraints on the interface between the controller 11 and the modem 10. Some of these constraints are electrical constraints, which include setup and hold times, voltage levels, . . . . Other constraints are logical or functional such as a set of legitimate symbol signaling sequences. 
     Referring to FIGS. 3 and 4, there is shown functional diagrams of the networks and the coupling with interface 20. The interface has essentially a transmit side and a receive side, each of which has parallel data lines that provides a multi-bit wide symbol. There are four data lines plus either two (FIG. 3) or three (FIG. 4) clock lines from the modem 10, carrying one of sixteen symbols on the interface; and there are either four (FIG. 3) or five (FIG. 4) data lines going to the modem 10, and thus going to and from interface IFA 22, from and to the networks 26, 28, respectively. Referring to FIGS. 3 and 4, the symbols shown in FIGS. 3 and 4 between IFB 24 and the controller 11 are the symbols used in the standard. The symbols shown in FIGS. 3 and 4 coupled to interface IFB 24 from the networks 26, 28 are related names/symbols because the signals on the networks 26, 28 (sometimes referred to herein as bus 26, 28) are different than those of the standard. (The signals on the bus 26, 28 are modified by the logic IFA 22 and IFB 24 such that the modem 10 and the controller 11 only see the standard signals and signaling sequences). Also shown is digital logic A 23 of IFA 22 and digital logic B 25 of IFB 24, which will be described in further detail hereinunder. Also shown in FIG. 4 is an additional clock line 29 which is essentially the modem-supplied Tx&#39;Clk divided by two (i.e., one-half the frequency or the modem supplied Tx&#39;Clk). 
     The symbols referred to above are defined in table 1, which are basically derived from the 802.4 standard symbols, standing for silence, data, bad signal, preamble, . . . . For example, for a preamble symbol the state of the transmit lines is, TXSYM3 is a (logic) one, TXSYM2 is a zero, TXSYM1 is a logic one, and TXSYMO is a &#34;don&#39;t care&#34; (x=don&#39;t care). This symbol is defined in the 802.4 standard (pad --  idle) and having the letter code P. 
     
                       TABLE 1                                                     
______________________________________                                    
               Transmit (T)                                               
                         SYM                                              
               or        Bit State                                        
Symbol  Signal       Receive (R) 3   2   1   0                            
______________________________________                                    
S       silence      T/R         1   1   1   X                            
D       data (0)     T/R         1   0   0   0                            
D       data (1)     T/R         1   0   0   1                            
B       bad.sub.-- signal                                                 
                     R only      1   0   1   X                            
P       preamble     T only      1   0   1   X                            
N       non.sub.-- data                                                   
                     T/R         1   1   0   X                            
M       modem control                                                     
                     T/R         0   X   X   X                            
______________________________________                                    
 
    
     Regular expression (1) describes the constraints which the IEEE standard places on transmissions from the controller 11 to (and through) the modem 10 to the medium 12. The sequence requirements are the sequences on the 4-bit parallel TXSYM lines (bits 3-0) between IFA 22 and modem 10, and between controller 11 and IFB 24. When the controller 11 communicates directly to the modem (for modem control), only modem-control signals are transmitted following the constraints described by expression (2). 
     
         S.sup.≧1 [(P.sup.8).sup.≧1 [(NND).sup.2 D.sup.2 ](D.sup.8).sup.≧O [(NND).sup.2 D.sup.2 ].sup.1-2 ].sup.≧1 P.sup.≧0 S                                         (1) 
    
     
         S.sup.≧1 [M.sup.Q ].sup.≧1 S                 (2) 
    
     Essentially, expression (1) indicates that the transmissions from the controller 11 to the modem 10 have one or more S symbols followed by the expression in the brackets one or more times, followed by zero or more P symbols, followed by an S symbol. The expression in the brackets, referred to in the IEEE standard as a &#34;frame&#34;, consists first of bytes of preamble (a bit of preamble is a P so a byte of preamble is 8 Ps , thus multiples of B P symbols. The bracket 
     
         [(NND).sup.2 D.sup.2 ] 
    
     includes non-data, non-data, data, non-data, non-data, data, data, data, and is referred to as a frame delimiter. Then data bytes follow (i.e., multiple of 8 data symbols), and to end or abort the frame, another one or two frame delimiters, respectively. 
     The interface A, IFA, 22 including digital logic A 23, and interface B, IFB, 24 including digital logic B 25, insure that the sequence requirement, if met by the individual controllers 11, will be met by the interface 20, which allows multiple controllers to share a modem. A preamble, frame delimiter (or more simply delimiter), data, and delimiter is a frame. A transmission consists of one or more frames back to back, optionally terminated by some amount of preamble (employed here as a postamble). The controllers can be sending data in normal transmission sequences, can be silent expecting to hear data, or can be sending modem control signals. When a controller is in a modem control mode sending modem control signals, the controller expects to receive modem control response signals. When the modem detects an internal fault, the modem transmits a response signal indicating a fault condition. The fault response signal goes to all of the attached controllers, whereas modem control response signals only go to the controller in the modem control mode which is stimulating the modem control response signals, because there are two different functions overlaid on the bus, one being normal communications and the other being modem control. The interface 20 meets the requirements of the bus protocol and modem-controller interface protocol of the standard. 
     Referring to FIG. 5 there is shown a block diagram of the interface A, IFA, 22&#39; which eliminates the modem 10 (i.e., modem eliminator), and thereby substitutes for the modem. The IFA 22&#39; includes digital logic Al 23&#39;, which will be discussed further hereinunder, and an oscillator (OSC) 27. Thus, the controllers 11, CONTA, CONTB, CONTC, . . . can still communicate with one another even though a modem is not present. Similarly, when a modem is present, but the communications system external to the modem and equipment interconnected by an embodiment of the present invention is malfunctioning, that modem can be commanded to operate in a loopback mode identical to that of the previously described &#34;modem eliminator&#34; 22&#39;. 
     The digital logic A 23, and the digital logic Al 23&#39;, in the preferred embodiment of the present invention, are implemented using programmable logic devices (PLDs). The digital logic B 25, in the preferred embodiment of the present invention is implemented using PDLs. The digital logic A 23, digital logic Al 23&#39; and digital logic B 25, denoted as Modem Interface Equations, Modem Eliminator Equations, and TBC Interface Equations, respectively, is given in two forms. (TBC denotes token bus controller 11.) The first form, Appendix A, is in Parallel Boolean Logic form. (Reference the Interface Definitions, Appendix B, and the IFB encoding rules, Appendix C.) The second form is in Boolean logic equations which translates directly to the combinatorial logic, Appendix D. For the modem interface R i  is Rx&#39;Sym i  (where 0≦i≦3), Rx&#39;Sym being the names from the standard, primed (&#39;) to reflect the modem&#39;s signals. 
     In the present invention, there is no explicit arbitration cycle preceding the gating of a transmission from a controller (TBC) 11 to the shared modem 10. The present invention use the properties of the protocol and recodes the symbols that are transmitted for sending data or modem information such that the symbols form sets in which each set is linearly ordered in terms of lines that are asserted. Thus, if two or more IFBs 24 concurrently impress different symbols, then exactly one of those symbols will be received by the IFA 22 and all the IFBs 24 of the interface 20. The recoding orders the transmissible symbols into sets with a strict dominance relationship, such that any combination of concurrently-impressible symbols is exactly equal to one of the impressed symbols. 
     By such a partitioning and structuring, the system does not have to perform contention resolution (it does not have to establish an &#34;owner&#34; for the modem). Rather, every controller trying to send its message drives the bus (in particular, the T-Bus 26) only so long as the controller remains dominant (i.e., its message has priority over another message). If two controllers try to send different messages, one of those messages will be dominant, the controller sending a T-bus symbol with more &#34;one&#34; bits will win and the other controller sending a T-bus symbol with fewer &#34;one&#34; bits will drop out. (In the preferred embodiment, a &#34;one&#34; bit is dominant over a &#34;zero&#34; bit on each line of T-bus 26.) The controller will continue trying to source symbols to its corresponding IFB, but the IFB will stop driving the bus. It will continue to assert the undriven state on the bus (the least dominant symbol being all zeros) until the bus comes back to the idle (all zeros) state. The T-bus 26 of the preferred embodiment of the present invention is a wired--OR bus, although the bus can be any type of an unidirectional drive bus, including a wired--AND bus, with appropriate inversion of the bus symbols. 
     The operation of the IFB occurs in a cycle having two phases, assert and compare. The IFB asserts a symbol on the bus in the first phase and in the second phase compares what it asserted to what is on the T-bus 26. If the result of the compare indicates the signals on the bus are different from what was asserted, the IFB goes into a blocking mode (non-transmitting) and attempts to assert the idle pattern. The IFB continues this mode until the T-bus 26 is all zeros (idle), in which case a compare results; then the IFB can continue sending its information received from the controller. If all the controllers send the same message, they all have &#34;ownership&#34; of the bus. In the present invention it is messages which have priority over other messages when presented simultaneously. 
     There must be time within each transmission period on a bus for the IFB to complete the cycle, i.e., assert and compare. If the bus is too long for the chosen data rate, so that the round trip propagation delay exceeds the time between bits, the system can be modified to compensate for the delay. When the modem&#39;s data rate is low enough, or the maximum separation of the IFA and IFBs, one from another, is small enough that this recoding and dominance-assessment process can cycle at the data rate, and the T bus conveys one symbol per cycle. At higher data rates, or larger IFA and IFB separations, the cycle must occur at a lower frequency, such as a cycle rate of half the data rate. In such a case, the T bus must convey two or more symbols per cycle, necessitating a wider T bus (more parallel lines) and a more complex set of recoding rules. Below there is discussed the explicit coding rules and state machines for the one-symbol-per-cycle and the two-symbols-per-cycle modes of operation. 
     The TBC&#39;s symbols are classified and recoded by the IFB before their attempted transmission of the T bus (reference Table 2). During this process an additional mode shift symbol (M) can be inserted in the encoded symbol stream; either one of the TBC&#39;s &#34;parallel&#34; modem-control symbols or one of its &#34;silence&#34; symbols will be deleted (not recoded) to preserve a 1-1 correspondence between input and output symbols. 
     
                       TABLE 2                                                     
______________________________________                                    
1 Bit-Per-Tbus-Cycle TxSym Encoding                                       
Abbre-                 TxSym    symbol                                    
                                      T-bus                               
viation                                                                   
       802.4-based symbol                                                 
                       encoding class encoding                            
______________________________________                                    
S      Silence         111x     I     0000                                
P      Preamble or Pad.sub.-- idle                                        
                       101x     D     1011                                
N      Non.sub.-- data 110x     D     1111                                
0      Zero            1000     D     1000                                
1      One             1001     D     1001                                
R      Reset           0111     MP    1011                                
L      disable Loopback                                                   
                       0101     MP    1001                                
E      Enable transmitter                                                 
                       0011     MP    1000                                
m0     Serial SM zero  0000     MS    1000                                
m1     Serial SM one   0001     MS    1001                                
M      modem control marker                                               
                       none     none  1111                                
______________________________________                                    
 
    
     symbols are shown in Table 3. 
     
                       TABLE 3                                                     
______________________________________                                    
1 Bit-Per-TBus-Cycle Dominance Sets                                       
set                      class                                            
______________________________________                                    
{S &lt; P &lt; M}              I                                                
{S &lt; 0 &lt; 1 &lt; P &lt; N}      D                                                
{S &lt; E &lt; L &lt; R &lt; M}      MP                                               
{S &lt; m0 &lt; m1 &lt; M}        MS                                               
______________________________________                                    
 
    
     The symbol S, for which the T bus is undriven, is the least element of all sets and represents all of the IFBs which are no longer actively driving the T bus. Tables 4 and 5 also reflect this partitioning into dominance sets. The dominant symbol of those concurrently impressed on the T bus is received by the IFA and all IFBs. The IFBs compare it to the symbol which they are impressing to determine whether or not they were dominant during the preceding T-bus cycle. The IFA tracks the encoding state of the dominant IFB(s) via a four-state finite state machine, and decodes the dominant symbol for presentation to the attached modem based on the current state of the 4-state machine. The IFA&#39;s states are: 
     A-idle--The T bus is idle; Silence is reported to the modem. 
     A-line--The T bus is being used to send MAC (Medium Access Control) symbols through the modem to the connected medium. 
     A-par-mgmt--The T bus is being used to send parallel modem-management symbols to the modem. 
     A ser-mgmt--The T bus is being used to send serial modem-management symbols to the modem. 
     
                       TABLE 4                                                     
______________________________________                                    
1 Bit-Per-TBus-Cycle IFA State Machine                                    
         state   T-bus symbol  next                                       
state name id        classes   coding                                     
                                     state                                
______________________________________                                    
                               reset 00                                   
A-idle     00        I         00xx  00                                   
                               x1xx  10                                   
                               10xx  01                                   
A-line     01        D         00xx  00                                   
                               all else                                   
                                     01                                   
A-par-mgmt 10        MP        00xx  00                                   
                               x111  11                                   
                               all else                                   
                                     10                                   
A-ser-mgmt 11        MS        00xx  00                                   
                               x111  10                                   
                               all else                                   
                                     11                                   
______________________________________                                    
 
    
     The dominant T-bus symbol is decoded based on the state of the IFA&#39;s four-state finite state machine as shown in Table 5. 
     
                       TABLE 5                                                     
______________________________________                                    
1 Bit-Per-TBus-Cycle TBus Decoding                                        
Tx&#39;Sym Coding                                                             
T-bus  Idle     Line     Parallel Mgmt                                    
                                    Serial Mgmt                           
Coding State    State    State      State                                 
______________________________________                                    
0000   1111 S   1111 S   1111 S     1111 S                                
1000            1000 0   0011 E     0000 m0                               
1001            1001 1   0101 L     0001 m1                               
1011   101x P   101x P   0111 R                                           
1111   1111 S   110x N   0001 m1    0001 m1                               
______________________________________                                    
 
    
     Each of the IFBs uses a six-state finite state machine, and a FIFO storing a small number of the TBC&#39;s output symbols, to classify and encode the output of the TBC, to manage the depth of the FIFO, and to determine the encoded symbol to impress on the T bus during the next T-bus cycle. 
     The IFB&#39;s states are: 
     B-idle--The TBC is idle; the T bus is undriven. 
     B-line--The TBC is sending MAC (Medium Access Control) symbols to the modem. 
     B-line-overrun--The TBC is attempting to send MAC symbols to the modem, but the initial part of the transmission was lost due to another TBC&#39;s use of the modem. If the modem becomes available before the TBC&#39;s transmission ceases, then Preamble symbols are sent in lieu of the TBC&#39;s transmission to insure that the TBC&#39;s activity is reflected by activity on the medium. 
     B-par-mgmt--The TBC is sending parallel modem-management symbols to the modem. The initial symbol of this transmission is deliberately discarded. 
     B-ser-mgmt--The TBC is sending serial modem-management symbols to the modem. 
     B-mgmt-overrun--The TBC is attempting to send modem-management symbols to the modem, but the initial part of the transmission was lost due to another TBC&#39;s use of the modem. The remainder of the modem-control transmission is ignored. 
     In the Table 6, the status was --  dominant in the transition conditions reflects whether the T bus matched the state driven by this IFB on the prior cycle (i.e., whether this IFB&#39;s T-bus symbol was dominant on the last cycle). This dominance assessment must be delayed from the assertion of the T-bus state driven by IFB by at least 2*T pd  from the time when the T bus is driven to account for bus propagation delays and clock distribution skew between the various IFBs (where T pd  is the sum of the worst-case one-way end-to-end line driver, line receiver, and propagation delays of the bus). In Table 6, the variable f designates the depth of the FIFO for the next cycle&#39;s encoding operation, whereas TA f  designates the f&#39;th entry in the FIFO (designated herein as TA). The variable T designates the output of the T-bus, and so T:=I indicates that the T-bus is driven with the symbol I (inactive), and is not really driven at all by this IFB. 
     
                                           TABLE 6                                 
__________________________________________________________________________
IFB State Machine                                                         
         state                next                                        
                                 actions taken                            
state name                                                                
         id transition condition                                          
                              state                                       
                                 on transition                            
__________________________________________________________________________
            reset             0000                                        
                                 T: = I (undriven); f: = 1                
B-idle   0000                                                             
            (class (TA.sub.f) = I)                                        
                              0000                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)*/was.sub.-- dominant                   
                              1001                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = Mx)*/was.sub.-- dominant                  
                              1010                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)*was.sub.-- dominant                    
                              0001                                        
                                 T: = P; f: = 1                           
            (class (TA.sub.f) = MP)*was.sub.-- dominant                   
                              0010                                        
                                 T: = M; f = 1                            
            (class (TA.sub.f) = MS)*was.sub.-- dominant                   
                              0010                                        
                                 T: = M; f: = 2                           
B-line   0001                                                             
            (class (TA.sub.f) = I)                                        
                              0000                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = Mx)                                       
                              1010                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)*/was.sub.-- dominant                   
                              1001                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)*was.sub.-- dominant                    
                              0001                                        
                                 T: = encode(TA.sub. f)                   
B-line-overrun                                                            
         1001                                                             
            (class (TA.sub.f) = I)                                        
                              0000                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = Mx)                                       
                              1010                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)*/was.sub.-- dominant                   
                              1001                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)*was.sub.-- dominant                    
                              1001                                        
                                 T: = P; f: = 1                           
B-par-mgmt                                                                
         0010                                                             
            (class (TA.sub.f) = I)                                        
                              0000                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)                                        
                              1001                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = Mx)*/was.sub.-- dominant                  
                              1010                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) =  MP)*was.sub.-- dominant                  
                              0010                                        
                                 T: = encode(TA.sub. f)                   
            (class (TA.sub.f) = MS)*was.sub.-- dominant                   
                              0110                                        
                                 T: = M; f: = f + 1                       
B-ser-mgmt                                                                
         0110                                                             
            (class (TA.sub.f) = I)                                        
                              0000                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)                                        
                              1001                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = Mx)*/was.sub.-- dominant                  
                              1010                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = MP)*was.sub.-- dominant                   
                              0010                                        
                                 T: = M; f: = 1                           
            (class (TA.sub.f) = MS)*was.sub.-- dominant                   
                              0110                                        
                                 T: = encode(TA.sub. f)                   
B-mgmt-overrun                                                            
         1010                                                             
            (class (TA.sub.f) = I)                                        
                              0000                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = D)                                        
                              1001                                        
                                 T: = I (undriven); f: = 1                
            (class (TA.sub.f) = Mx)                                       
                              1010                                        
                                 T: = I (undriven); f: = 1                
__________________________________________________________________________
 
    
     When the modem&#39;s data rate and the end-to-end propagation delays between the IFA and IFBs, or among the IFBs, require a T-bus cycle time greater than the modem&#39;s symbol period, then more than one bit must be encoded and transmitted each T-bus cycle The IFA state machine of Table 4 and the IFB state machine of Table 5 also function in these cases, although some adaptation may be necessary. The IFA state machine of Table 4 must be adapted to the changed T-bus symbol encoding, after which the serial and parallel management states can be merged. The IFB state machine of Table 6 can function unchanged, but its FIFO now works in symbol pairs, and so must be preceded by additional logic which aligns and pairs the symbols output by the TBC into the pairings shown in Table 7. In essence, symbols destined for I or Mp class pairings are doubled or deleted (ignored) as necessary to form the pairings. Symbols destined for the D or M s  classes are paired from first reception, and any odd terminal symbol can be either doubled or deleted. The TxSym encoding, T-bus dominance sets, T-bus decoding, and IFA state machines for 2 bits-per-T-bus cycle operation are shown in Table 7. The dominance sets of concurrently-impressible symbol pairs are shown in Table 8. 
     
                       TABLE 7                                                     
______________________________________                                    
2 Bits-Per-TBus-Cycle TxSym Encoding                                      
                   TxSym     sym-                                         
Abbre-             encoding  bol    T-bus                                 
viation                                                                   
       802.4-based symbol pair                                            
                       1st    2nd  class                                  
                                        encoding                          
______________________________________                                    
SS     Silence, Silence                                                   
                       111x,  111x I    00000                             
PP     Preamble, Preamble                                                 
                       101x,  101x D    10100                             
NN     Non.sub.-- data, Non.sub.-- data                                   
                       110x,  110x D    11111                             
N0     Non.sub.-- data, Zero                                              
                       110x,  1000 D    11000                             
N1     Non.sub.-- data, One                                               
                       110x,  1001 D    11001                             
0N     Zero, Non.sub.-- data                                              
                       1000,  110x D    11010                             
1N     One, Non.sub.-- data                                               
                       1001,  110x D    11011                             
00     Zero, Zero      1000,  1000 D    10000                             
01     Zero, One       1000,  1001 D    10001                             
10     One, Zero       1001,  1000 D    10011                             
11     One, One        1001,  1001 D    10111                             
RR     Reset           0111,  0111 MP   11011                             
LL     disable Loopback                                                   
                       0101,  0101 MP   11001                             
EE     Enable transmitter                                                 
                       0011,  0011 MP   11000                             
m0m0   Serial SM zero, zero                                               
                       0000,  0000 MS   10000                             
m0m1   Serial SM zero, one                                                
                       0000,  0001 MS   10001                             
m1m0   Serial SM one, zero                                                
                       0001,  0000 MS   10011                             
m1m1   Serial SM one, one                                                 
                       0001,  0001 MS   10111                             
MM     modem control marker                                               
                       none      M    11111                               
______________________________________                                    
 
    
     
                       TABLE 8                                                     
______________________________________                                    
2 Bits-Per-TBus-Cycle Dominance Sets                                      
set                          class                                        
______________________________________                                    
{SS &lt; PP &lt; MM}               I                                            
{SS &lt; PP &lt; NN}               D.sub.0                                      
{SS &lt; 00 &lt; 01 &lt; 11 &lt; 10 &lt; NN}                                             
                             D.sub.1                                      
{SS &lt; 0N &lt; 1N &lt; NN}          D.sub.2                                      
{SS &lt; N0 &lt; N1 &lt; NN}          D.sub.3                                      
{SS &lt; EE &lt; LL &lt; RR &lt; MM}     MP                                           
{SS &lt; m0m0 &lt; m0m1 &lt; m1m1 &lt; m1m0 &lt; MM}                                     
                             MS                                           
______________________________________                                    
 
    
     The constraints of the 802.4 protocol ensure that when any IFB which is actively driving the T bus chooses a symbol from one D i  set, all other IFBs which are actively driving the T bus either will all chose symbols from the same D i  set, or that one or more will choose the symbol pair NN, which is dominant in all the D i  sets. The symbol pair SS, in which the T bus is undriven, is the least element of all sets and represents all the IFBs which are no longer driving the T bus. Tables 9 and 10 also reflect this partitioning into dominance sets. The dominant symbol pair of those concurrently impressed on the T bus is received by the IFA and all IFBs compare it to the symbol pair which they are impressing to determine whether or not they were dominant during the preceding T bus cycle. The IFA tracks the encoding state (reference Table 9) of the dominant IFB(s) via a three-state finite state machine, and decodes the dominant symbol pair for presentation to the attached modem based on the current state of that 3-state machine. The IFA&#39;s states are: 
     A-idle--the T bus is idle; Silence is reported to the modem. 
     A-line--The T bus is being used to send MAC (Medium Access Control) symbols through the modem to the connected medium. 
     A-mgmt--The T bus is being used to send modem-management symbols to the modem. 
     The dominant T-bus symbol is decoded based on the state of the IFA&#39;s three-state finite state machine as shown in Table 10. 
     
                       TABLE 9                                                     
______________________________________                                    
2 Bits-Per-TBus-Cycle IFA State Machine                                   
          state      T-bus symbol  next                                   
state name  id     classes     coding                                     
                                     state                                
______________________________________                                    
                               reset 00                                   
A-idle      001    I           00xxx 00                                   
                               x1xxx 10                                   
                               10xxx 01                                   
A-line      010    D           00xxx 00                                   
                               all else                                   
                                     01                                   
A-mgmt      100    M           00xxx 00                                   
                               all else                                   
                                     10                                   
______________________________________                                    
 
    
     
                       TABLE 10                                                    
______________________________________                                    
2 Bits-Per-TBus-Cycle TBus Decoding                                       
Tx&#39;Sym Coding                                                             
T-bus A-idle State                                                        
                  A-line State A-mgmt State                               
Coding                                                                    
      1st    2nd      1st  2nd     1st  2nd                               
______________________________________                                    
00000 1111,  1111   SS  1111,                                             
                             1111 SS   1111,                              
                                            1111 SS                       
10000                   1000,                                             
                             1000 00   0000,                              
                                            0000 m0m0                     
10001                   1000,                                             
                             1001 01   0000,                              
                                            0001 m0m1                     
10011                   1001,                                             
                             1001 11   0001,                              
                                            0001 m1m1                     
10111                   1001,                                             
                             1000 10   0001,                              
                                            0000 m1m0                     
10100 101x,  101x   PP  101x,                                             
                             101x PP                                      
11000                   110x,                                             
                             1000 N0   0011,                              
                                            0011 EE                       
11001                   110x,                                             
                             1001 N1   0101,                              
                                            0101 LL                       
11010                   1000,                                             
                             110x 0N                                      
11011                   1001,                                             
                             110x 1N   0111,                              
                                            0111 RR                       
11111 1111,  1111   SS  110x,                                             
                             110x NN   0001,                              
                                            0001 m1m1                     
______________________________________                                    
 
    
     Referring to FIG. 6, there is shown a functional diagram of the encoding of the IFB 24 for the two-bits-per-cycle case. The controller (TBC) 11 is transmitting symbols to a first encoder 40 of the corresponding IFB 24. The symbol that comes from the TBC 11 (4 wide) is encoded by the first encoder 40 into a five-wide symbol, encode-1(Tx), and is stored in a three-deep FIFO 42. The three-deep FIFO 42 is clocked every clock TxClk and is, in the preferred embodiment of the present invention, a shift register. Either the first and second, or the second and third, elements of this FIFO 42, as selected by control logic 43, are recoded in a second encoder 44, the output of the second encoder 44 being coupled to a second FIFO 46 (the second FIFO 46 of the preferred embodiment of the present invention being a three-deep shift register). The second encoder 44 encodes (or recodes) the output of the three-deep FIFO 42 into a 7-bit pair of elements and stores the result therefrom into the second FIFO 46. One of the elements F(0), F(1), or F(2) is chosen by a FIFO control logic unit (FCL) 48 for transmission onto the T-bus 26 via T-bus drivers 49. 
     Every symbol that comes from the TBC 11 is encoded (i.e., classified) and in the process some changes are made. The first level of encoding (via encoder 40) occurs every clock, TxClk. When there is an unspecified bit in the output symbol of the TBC 11, the bit is driven to a known value. Otherwise, the first level of encoding is basically a classification, i.e., serial management, parallel management, silence, or data non-silence. The control logic 43 monitors these recoded symbols, and presents them as pairs (when possible) to the second encoder. The second level of encoding (via second encoder 44) is selectively clocked by TxClk and an enable term from the FIFO control logic unit 48; and any position can be read and outputted. The FCL 48 monitors the first encoder output, in accordance with Table 6, to determine when to activate the second encoder. The symbols are paired by the second level of encoding under control of FCL 48, the encoding being performed in accordance with the information of Appendix C. 
     Referring to FIG. 7, there is shown an alternative embodiment of the present invention, in which a plurality of modems 10 (including a corresponding IFA 22), each having a single independent receiver, is each connected to a corresponding receive bus 28. Each receive bus is connected to a second plurality of controllers 11 via a corresponding IFB 24&#39;. Each IFB 24&#39; includes receiver selection logic (RSL) 31, such that received symbols are presented to the IFB 24&#39; from only one modem at a time. Generally, modems meeting the standard include a locally originated transmit clock. In the embodiment of FIG. 6, a single TClk line 33 is shown. The exact implementation of TClk generation is not relevant to the present invention and will not be discussed further; however, it is to be noted that some method of providing all of the modems 10 with a single common TClk must be employed, a variety of methods being generally well known in the art. 
     While there has been shown what is considered the preferred embodiment of the present invention, it will be manifest that many changes and modifications can be made therein without departing from the essential spirit and scope of the invention. It is intended, therefore, in the annexed claims to cover all such changes and modifications which fall within the true scope of the invention. 
     
                                           APPENDIX A1                             
__________________________________________________________________________
1 bit/symbol - Parallel Logical Form of the Interfaces                    
__________________________________________________________________________
In the following, the subscript i (symbol bit weight) has the range 0     
≦ i ≦ 3.                                                    
Clocks for registered state data are shown in the right-hand              
__________________________________________________________________________
margin.                                                                   
Nomenclature                                                              
X.sub.a .sub.-.sub.bc is a compact way of writing                         
                       X.sub.a */X.sub.b *X.sub.c                         
/X.sub.a .sub.-.sub.bc is a compact way of writing                        
                       /(X.sub.a */X.sub.b *X.sub.c) = /X.sub.a + X.sub.b 
                       + /X.sub.c                                         
Modem Interface Equations                                                 
RClk   := Rx&#39;Clk                                                          
bus clock=modem clock                                                     
R.sub.i                                                                   
       := Rx&#39;Sym.sub.i                                                    
bus symbol=modem symbol                                                   
TClk   := Tx&#39;Clk                                                          
bus clock=modem clock                                                     
-register to record T-bus state at end of IFB assertion cycle             
U.sub.i                                                                   
       := T.sub.i                  ↑TClk                            
-IFA state                                                                
K.sub.0                                                                   
       := reset + U .sub.--.sub.32 ↓TClk                           
K.sub.1                                                                   
       := /reset*K.sub.0 *U.sub.3 .sub.- .sub.2 + /reset*K.sub.1 */U      
       .sub.--.sub.32              ↓TClk                           
K.sub.2                                                                   
       := /reset*K.sub.0 *U.sub.2 + /reset*K.sub.2 */U .sub.--.sub.32 +   
       /reset*K.sub.3 *U.sub.210   ↓TClk                           
K.sub.3                                                                   
       := /reset*K.sub.3 /U .sub.--.sub.32 + /reset*K.sub.2 *U.sub.210    
                                   ↓TClk                           
-decoded T-bus symbol and IFA output to modem                             
Tx&#39;Sym.sub.i                                                              
        ##STR1##                                                          
{S}                                ↓Tx&#39;Clk                         
       + (U.sub.3 .sub.-.sub.2 *K.sub.0 + U.sub.3 .sub.-.sub.21 *K.sub.1)*
       {1010}.sub.i                                                       
{P}                                                                       
       + U.sub.32 *K.sub.1 *{1100}.sub.i                                  
{N}                                                                       
       + U.sub.3 .sub.--.sub.21 *K.sub.1 *{100|U.sub.0 }.sub.i   
{0,1}                                                                     
       + U.sub.3 .sub.-.sub.2 *K.sub.2 *{0|U.sub.0 |U   
       .sub.-.sub.10 |1}.sub. i                                  
{E,L,R}                                                                   
       + U.sub.32 *K.sub.2 *{0001}.sub.i                                  
{m1}                                                                      
       + U.sub.3 *K.sub.3 *{000|U.sub.0 }.sub.i                  
{m0,m1}                                                                   
Modem Eliminator Equations                                                
RClk   = TClk := local oscillator                                         
-register to record T-bus state at end of IFB assertion cycle             
U.sub.i                                                                   
       := T.sub.i                  ↑TClk                            
-IFA state                                                                
K.sub.0                                                                   
       := reset + U .sub.--.sub.32 ↓TClk                           
K.sub.1                                                                   
       := /reset*K.sub.0 *U.sub.3 .sub.-.sub.2 + /reset*K.sub.1 */U       
       .sub.--.sub.32              ↓TClk                           
K.sub.2                                                                   
       := /reset*K.sub.0 *U.sub.2 + /reset*K.sub.2 */U .sub.--.sub.32 +   
       /reset*K.sub.3 *U.sub.210   ↓TClk                           
K.sub.3                                                                   
       := /reset*K.sub.3 */U .sub.--.sub.32 + /reset*K.sub.2 *U.sub.210   
                                   ↓TClk                           
-decoded T-bus symbol, recoded for loopback on R-bus; IFA loopback output 
to IFB                                                                    
R.sub.i                                                                   
       := (U .sub.- .sub.3 + U.sub.32 *K.sub.0)*{1110}.sub.i              
{S}                                ↓TClk                           
       + (U.sub.3 .sub.-.sub.2 *K.sub.0 + U.sub.3 .sub.-.sub.21 *K.sub.1)*
       {1000}.sub.i                                                       
{P}    →{0}                                                        
       + U.sub.32 *K.sub.1 *{1100}.sub.i                                  
{N}                                                                       
       + U.sub.3 .sub.-.sub.1 *K.sub.1 *{100|U.sub.0 }.sub.i     
{0,1}                                                                     
       + U.sub.3 *K.sub.2 *{0|U.sub.2 |U .sub.-.sub.2   
       |1}.sub.i                                                 
{E,L,R,m1}                                                                
       →{ack}                                                      
       + U.sub.3 *K.sub.3 *{010|U.sub.0 }.sub.i                  
{m0m1} →{nak}                                                      
__________________________________________________________________________
In the following, the subscripts i (symbol bit weight) and k (encoded     
Tx--symbol bit                                                            
weight) have the ranges 0 ≦ i ≦ 3 and 0 ≦ k ≦ 
5, respectively.                                                          
Clocks for registered state data are shown in the right--hand             
__________________________________________________________________________
margin.                                                                   
TBC Interface Equations                                                   
RxClk  := RClk                                                            
inverted clock for TBC                                                    
-IFB T-bus state synchronized for R-bus use                               
J.sub.1                                                                   
       := I.sub.1                                                         
synchronizer!!                     ↑RClk                            
J.sub.3                                                                   
       := I.sub.3 A                                                       
synchronizer!!                                                            
       ↑RClk                                                        
-IfB output to TBC                                                        
RxSym.sub.i                                                               
       := [J.sub.3 .sub.-.sub.1 + J .sub.-.sub.3 *R.sub.2                 
       + R .sub.-.sub.3210 ]*R.sub.i                                      
                       ↑RClk                                        
       + J.sub.31 */R .sub.-.sub.3210 *{0100}.sub.i + J .sub.-3 *(R       
       .sub.--.sub.32 + R .sub.--.sub.31 + R .sub.--.sub.30)*{1010}.sub.i 
TxClk  := TClk                                                            
non-inverted clock for TBC                                                
dTClk  := ////TClk                                                        
delayed version of TClk                                                   
-three-stage shift register holding recoded symbols for possible T-bus    
transmission                                                              
F[0].sub.k                                                                
       := encode(Tx).sub.k         ↑TxClk                           
F[1].sub.k                                                                
       := F[0].sub.k               ↑TxClk                           
F[2].sub.k                                                                
       := F[1] .sub.k              ↑TxClk                           
-control of F[f] &#34;digital delay-line&#34; depth via 2-bit synchronous counter 
f.clear                                                                   
       := reset+/wd+/F[f].sub.54 +/I .sub.-.sub.31                        
                                   ↑dTClk                           
f.inc                                                                     
        ##STR2##                   ↑dTClk                           
-IFB state                                                                
I.sub.0                                                                   
       := /reset*F[f] .sub.-.sub.54                                       
                                   ↑dTClk                           
I.sub.1                                                                   
       := /reset*F[f].sub.5        ↑dTClk                           
I.sub.2                                                                   
       := /reset*F[f].sub.54 *I .sub.-.sub.31                             
                                   ↑dTClk                           
I.sub.3                                                                   
       := /reset*/F[f] .sub.--.sub.54 *(I.sub.3 +/wd)                     
                                   ↑dTClk                           
I.sub.3 A                                                                 
       := /reset*F[f].sub.5 *(I.sub.3 +/wd)                               
==glitch-freeI.sub.1 *I.sub.3                                             
       ↑dTClk                                                       
         -IFB output to T-bus                                             
Tout.sub.i                                                                
       := /reset*wd*[(I .sub.--.sub.10 +I.sub.30)*F[f] .sub.-.sub.54      
       *{1011}.sub.i               ↑dTClk                           
               +  (I .sub.--.sub.10 *F[f].sub.5 + I .sub.--.sub.321       
               *F[f].sub.54 + I.sub.2 *F[f].sub.5 -.sub.4)*{1111}.sub.i   
               + (I .sub.-.sub.30 *F[f] .sub.-.sub.54 + I .sub.--.sub.321 
               *F[f].sub.5 .sub.-.sub.4 + I.sub.2 *F]f].sub.54)*{F[f]}.sub
               .i ]                                                       
-IFB assessment of whether its asserted T-bus symbol was dominant         
wd     := (T=Tout)                 ↑TClk                            
-classification and recoding of TBC output                                
encode(Tx).sub.k                                                          
       :={Tx .sub.-.sub.3,                                                
bit 5                                                                     
        ##STR3##                                                          
bit 4                                                                     
       /Tx.sub.321,                                                       
bit 3                                                                     
       Tx.sub.32 .sub.-.sub.1,                                            
bit 2                                                                     
       Tx .sub.-.sub.321 +Tx.sub.3 .sub.-.sub. 21 +Tx.sub.32 .sub.-.sub.1,
bit 1                                                                     
       Tx .sub.--.sub.210 +Tx .sub.-.sub.32 +Tx.sub.3 .sub.-.sub.21       
       +Tx.sub.32 .sub.-.sub.1 }.sub.k                                    
bit 0                                                                     
__________________________________________________________________________
 
    
     
                                           APPENDIX A2                             
__________________________________________________________________________
2 bits/symbol--Parallel Logical Form of the Interfaces                    
__________________________________________________________________________
In the following, the subscript i and k have the ranges 0 ≦ i      
≦ 3 (symbol bit weight)                                            
and 0 ≦ j ≦ 4 (encoded Tx--symbol bit weight),              
respectively.                                                             
Clocks for registered state data are shown in the right--hand             
__________________________________________________________________________
margin.                                                                   
Nomenclature                                                              
X.sub.a .sub.-.sub.bc is a compact way of writing                         
                         X.sub.a */X.sub.b *X.sub.c                       
/X.sub.a .sub.-.sub.bc is a compact way of writing                        
                         /(X.sub.a */X.sub.b *X.sub.c)=/X.sub.a +X.sub.b  
                         +/X.sub.c                                        
Modem Interface Equations                                                 
RClk   := Rx&#39;Clk                                                          
bus clock=modem clock                                                     
R.sub.i                                                                   
       := Rx&#39;Sym.sub.i                                                    
bus symbol=modem symbol                                                   
TClk   := Tx&#39;Clk                                                          
modem clock                                                               
TClk2  := /TClk2                                                          
half-frequency T--bus clock                                               
       ↓TClk                                                       
-register to record T-bus state at end of IFB assertion cycle             
U.sub.j                                                                   
       := T.sub.j                      ↑TClk2                       
-IFA state                                                                
K.sub.0                                                                   
       := reset + U .sub.-- .sub.43    ↑(TClk*TClk2)                
K.sub.1                                                                   
       := /reset*K.sub.0 *U.sub.4 .sub.-.sub.3 + /reset*K.sub.1 */U       
       .sub.--.sub.43                  ↑(TClk*TClk2)                
K.sub.2                                                                   
       := /reset*K.sub.0 *U.sub.3 + /reset*K.sub.2 */U .sub.--.sub.43     
                                       ↑(TClk*TClk2)                
         -decoded T-bus symbol pair                                       
W.sub.7-0                                                                 
       := (U .sub.--.sub.43 + U.sub.43 *K.sub.0)*{1110}.sup.2             
{SS}                                   ↑(TClk*TClk2)                
       + (U.sub.4 .sub.-.sub.3 *K.sub.0 + U .sub.-.sub.32 .sub.-.sub.1    
       *K.sub.1)*{1010}.sup.2                                             
{PP}                                                                      
       + U.sub.32 *K.sub.1 *{1100}.sup.2                                  
{NN}                                                                      
       + U.sub.3 .sub.--.sub.21 *K.sub.1 *{1100}{100|U.sub.0 }   
{N0,N1}                                                                   
       + U.sub.3 .sub.-.sub.21 *K.sub.1 *{100|U.sub.0 }{1100}    
{0N,1N}                                                                   
       + U.sub.4 .sub.--.sub.32 *K  .sub.-.sub.0 *{K.sub.1 |00.ve
       rtline.U.sub.1 }{K.sub.1 |00|U .sub.-.sub.10 }   
{00,01,10} and                                                            
{m0m0,m0m1,m1m0}                                                          
       + U .sub.-.sub.321 *K .sub.-.sub.0 *{K.sub.1 |001}{K.sub.1
        |001}                                                    
{11} and {m1m1}                                                           
       + U.sub.3 *K.sub.2 *{0|U .sub.-.sub.20 |U        
       .sub.--.sub.210 |1}.sup.2                                 
{EE,LL,RR}                                                                
-IFA output to modem                                                      
Tx&#39;Sym.sub.1                                                              
       := W.sub.4+i *TClk2+W.sub.i */TClk2                                
                                       ↓Tx&#39;Clk                     
Modem Eliminator Equations                                                
RClk   = TClk := local oscillator                                         
TClk2  := /TClk2                                                          
half-frequency T-bus clock                                                
       ↓TClk                                                       
-register to record T-bus state at end of IFB assertion cycle             
U.sub.j                                                                   
       := T.sub.j                      ↑TClk2                       
-IFA state                                                                
K.sub.0                                                                   
       := reset + U .sub.--.sub.43     ↑(TClk*TClk2)                
K.sub.1                                                                   
       :=  /reset*K.sub.0 *U.sub.4 .sub.-.sub.3 + /reset*K.sub.1 */U      
       .sub.--.sub.43                  ↑(TClk*TClk2)                
K.sub.2                                                                   
       := /reset*K.sub.0 *U.sub.3 + /reset*K.sub.2 */U .sub.--.sub.43     
                                       ↑(TClk*TClk2)                
-decoded T-bus symbol pair, recoded for loopback on R-bus                 
W.sub.7-0                                                                 
       := (U .sub.--.sub.43 + U.sub.43 *K.sub.0)*{1110}.sup.2             
{SS}                                   ↑(TClk*TClk2)                
       + (U.sub.4 .sub.-.sub.3 *K.sub.0 + U .sub.-.sub.32 .sub.-.sub.1    
       *K.sub.1)*{1000}.sup.2                                             
       {PP}                      →{00}                             
       + U.sub.32 *K.sub.1 *{1100}.sup.2                                  
       {NN}                                                               
       + U.sub.3 .sub.--.sub.21 *K.sub.1 *{1100}{100|U.sub.0 }   
       {N0,N1}                                                            
       + U.sub.3 .sub.-.sub.21 *K.sub.1 *{100|U.sub.0 }{1100}    
       {0N,1N}                                                            
       + U.sub.4 .sub.--32 *K.sub.1 *{100|U.sub.1 }{100|
       U .sub.-.sub.10 }                                                  
       {00,01,10}                                                         
       + U .sub.-.sub.321 *K.sub.1 *{1001}{1001}                          
       {11}                                                               
       + U.sub.4 .sub.-.sub.3 *K.sub.2 *{0010}                            
       {m0,m1}.sup.2     →{nak}.sup.2                              
       + U.sub.3 *K.sub.2 *{0100}.sup.2                                   
       {EE,LL,RR}        →{ack}.sup.2                              
-IFA loopback output to IFB                                               
R.sub.i                                                                   
       := W.sub.4+i *TClk2 + W.sub.i */TClk2                              
                                       ↓Tx&#39;Clk                     
__________________________________________________________________________
In the following, the subscripts i, j and k have the ranges 0 ≦ i  
≦ 3 (symbol bit                                                    
weight), and 0 ≦ j ≦ 4 and 0 ≦ k ≦ 6 (encoded 
Tx--symbol bit weights), respectively.                                    
Clocks for registered state data are shown in the right--hand             
__________________________________________________________________________
margin.                                                                   
TBC Interface Equations                                                   
RxClk  := /RClk                                                           
inverted clock for TBC                                                    
-IFB T-bus state synchronized for R-bus use                               
J.sub.1                                                                   
       := I.sub.1                                                         
synchronizer!!                          ↑RClk                       
J.sub.3                                                                   
       := I.sub.3 A                                                       
synchronizer!!                                                            
       ↑RClk                                                        
-IFB output to TBC                                                        
RxSym.sub.i                                                               
       := [J.sub.3 .sub.-.sub.1 + J .sub.-.sub.3 *R.sub.2                 
       + R .sub.-.sub.3210 ]*R.sub.i                                      
                         ↑RClk                                      
       + J.sub.31 */R .sub.-.sub.3210 *{0100}.sub.i + J .sub.-.sub.3 *(R  
       .sub.--.sub.32 +R .sub.--.sub.31 +R .sub.--.sub.30)*{1010}.sub.i   
TxClk  := TClk                                                            
clock for TBC                                                             
TClk2  := TClk2                                                           
dTClk2 := ////TClk2                                                       
delayed version of TClk2                                                  
-three-stage shift register holding slightly-recoded TBC output           
D[0].sub.j                                                                
       := encode.sub.-- 1(Tx).sub.j    ↑TxClk                       
D[1].sub.j                                                                
       := D[0].sub.j                   ↑TxClk                       
D[2].sub.j                                                                
       := D[1].sub.j                   ↑TxClk                       
-multiplexer on three-stage shift register output, and its control        
d      := /reset*/d*D[1].sub.4 *D[0] .sub.-.sub.4 + /reset*d*D[2].sub.4   
                                       ↑TxClk                       
E.sub.j                                                                   
       := /d•D[0].sub.j +d•D[1].sub.j                         
:= D[d].sub.j                                                             
E.sub.j+5                                                                 
       := /d•D[1].sub.j +d•D[2].sub.j                         
:= D[d+1].sub.j                                                           
-three-stage shift register holding recoded symbol pairs for possible     
T-bus transmission                                                        
F[0].sub.k                                                                
       := encode.sub.-- 2(E.sub.9-0).sub.k                                
                                       ↑TClk2                       
F[1].sub.k                                                                
       := F[0].sub.k                   ↑TClk2                       
F[2].sub.k                                                                
       := F[1].sub.k                   ↑TClk2                       
-control of F[f] &#34;digital delay-line&#34; depth via 2-bit synchronous counter 
f.clear                                                                   
       := reset+/wd+/F[f].sub.65 +/I .sub.-.sub.31                        
                                       ↑dTClk2                      
f.inc                                                                     
        ##STR4##                       ↑dTClk2                      
-IFB state                                                                
I.sub.0                                                                   
       := /reset*F[f] .sub.- .sub.65   ↑dTClk2                      
I.sub.1                                                                   
       := /reset*F[f].sub.6            ↑dTClk2                      
I.sub.2                                                                   
       := /reset*F[f].sub.65 *I .sub.-.sub.31                             
                                       ↑dTClk2                      
I.sub.3                                                                   
       := /reset*F[f] .sub.--.sub.65 *(I.sub.3 +/wd)                      
                                       ↑dTClk2                      
I.sub.3 A                                                                 
       := /reset*F[f].sub.6 *(I.sub.3 +/wd)                               
==glitch-free I.sub.1 *I.sub.3                                            
       ↑dTClk2                                                      
-IFB output to T-bus                                                      
Tout.sub.k                                                                
       := /reset*wd*(I .sub.--.sub.10 +I.sub.30)*F[f] .sub.-.sub.65       
       *{10100}.sub.k                  ↑dTClk2                      
       + /reset*wd*(I .sub.--.sub.10 *F[f].sub.6 + I .sub.--.sub.321      
       *F[f].sub.65 + I.sub.2 *F[f].sub.6 .sub.-.sub.5)*{11111}.sub.k     
       + /reset*wd*(I .sub.-.sub.30 *F[f] .sub.-.sub.65                   
       + I .sub.--.sub.321 *F[f].sub.6 .sub.-.sub.5 + I.sub.2 *F[f].sub.65
       )*{F[f]}.sub.k                                                     
-IFB assessment of whether its asserted T-bus symbol was dominant         
wd     := (T=Tout)                     ↑TClk2                       
-first-level classification and recoding of TBC output                    
encode.sub.-- 1(Tx).sub.j                                                 
       := {Tx .sub.-.sub.32 +Tx .sub.-.sub.31 +Tx.sub.21,                 
bit 4                                                                     
       Tx.sub.3,                                                          
bit 3                                                                     
       Tx.sub.2,                                                          
bit 2                                                                     
       Tx.sub.1,                                                          
bit 1                                                                     
       Tx .sub.-.sub.32 +Tx .sub.-.sub.31 +Tx .sub.--.sub.210 }.sub.j     
bit 0                                                                     
-second-level recoding of TBC output                                      
encode.sub.-- 2(E).sub.k                                                  
       := {E .sub.--.sub.98 +E.sub.98,                                    
bit 6                                                                     
       E.sub.9,                                                           
bit 5                                                                     
       /E.sub.876,                                                        
bit 4                                                                     
       E.sub.9 .sub.-.sub.8 +E .sub.-.sub.987 +E .sub.-.sub.982,          
bit 3                                                                     
       E .sub.--.sub.9854 +E .sub.-- .sub.9853 +E .sub.--.sub.9850 +E     
       .sub.-.sub.986 +E .sub.-.sub.9872 +E .sub.-.sub.98 .sub.--.sub.765 
       .sub.--.sub.210,                                                   
bit 2                                                                     
       E .sub.--.sub.985 +E.sub.9 .sub.-.sub.876 +E .sub.-.sub.985 +E     
       .sub.-.sub.982,                                                    
bit 1                                                                     
       E .sub.--.sub.985 +E .sub.--.sub.984 +E .sub.--.sub.983 +E         
       .sub.--.sub.980 +E.sub.9 .sub.-.sub.87 +E .sub.-.sub.985 +E        
       .sub.-.sub.980 +E .sub.-.sub.9872 }.sub.k                          
bit 0                                                                     
__________________________________________________________________________
 
    
     
                                           APPENDIX B                              
__________________________________________________________________________
Interface Definitions and Received Symbol Transformation                  
__________________________________________________________________________
Interface Definitions                                                     
      3210                                                                
S   = 111x                                                                
silence                                                                   
    Tx &amp; Rx                                                               
N   = 110x                                                                
non.sub.-- data                                                           
    Tx &amp; Rx                                                               
D d = 100d                                                                
data d (where d = 0 or 1)                                                 
    Tx &amp; Rx                                                               
P   = 101x                                                                
pad.sub.-- idle (preamble)                                                
    Tx only                                                               
B   = 101x                                                                
bad.sub.-- signal                                                         
    Rx only                                                               
M   = 0xxx                                                                
modem-control signal                                                      
    Tx &amp; Rx                                                               
R   = 0111                                                                
station mgmt reset                                                        
    Tx only                                                               
L   = 0101                                                                
station mgmt disable loopback                                             
    Tx only                                                               
E   = 0011                                                                
station mgmt enable transmitter                                           
    Tx only                                                               
m d = 001d                                                                
serial station mgmt data d                                                
    Tx only                                                               
Idle                                                                      
    = 0001                                                                
station mgmt &#34;mark&#34; (line idle)                                           
    Rx only                                                               
Ack d                                                                     
    = 001d                                                                
station mgmt positive acknowledge, data d                                 
    Rx only                                                               
Nak d                                                                     
    = 010d                                                                
station mgmt negative acknowledge, data d                                 
    Rx only                                                               
PLE = 0111                                                                
modem-detected (physical layer) error                                     
    Rx only                                                               
RxClk                                                                     
rising-edge active, setup = 40% of period, hold = 10 ns                   
TxClk                                                                     
rising-edge active, setup = 35% of period, hold = 5 ns                    
__________________________________________________________________________
Received Symbol Transformation                                            
The reported receive symbol Rx.sub.i is a function of the received symbol 
R.sub.i and the                                                           
interface&#39;s transmit state and class of the transmit symbol Tx.sub.i :    
Received                                                                  
        Transmit State and Class of Transmit Symbol                       
Symbol    S-copy    B-pad                                                 
R.sub.i M      M  M        M  all else                                    
__________________________________________________________________________
M &amp;  PLE                                                                  
        R.sub.i                                                           
              B   NAK.sub.0                                               
                          B   B                                           
PLE     R.sub.i                                                           
              R.sub.i                                                     
                  R.sub.i R.sub.i                                         
                              R.sub.i                                     
 M      R.sub.i                                                           
              R.sub.i                                                     
                  NAK.sub.0                                               
                          R.sub.i                                         
                              R.sub.i                                     
__________________________________________________________________________
 
    
     
                       APPENDIX C1                                                 
______________________________________                                    
1 Bit/Symbol - IFB Encoding                                               
encode(Tx) is defined by the following table:                             
Tx             F[1]    which                                              
3210           54 3210 encodes                                            
______________________________________                                    
0000           11 1000 m0                                                 
0001           11 1001 m1                                                 
0011           10 1000 E                                                  
0101           10 1001 L                                                  
0111           10 1011 R                                                  
1000           01 1000 0                                                  
1001           01 1001 1                                                  
110x           01 1111 N                                                  
101x           01 1011 P                                                  
111x           00 0000 S                                                  
______________________________________                                    
 
    
     
                       APPENDIX C2                                                 
______________________________________                                    
2 Bits/Symbol - IFB Encoding                                              
______________________________________                                    
encode.sub.-- 1(Tx) is defined by the following table:                    
Tx             D[0]    which                                              
3210           43 210  encodes                                            
______________________________________                                    
0000           00 000  m0                                                 
0001           00 001  m1                                                 
0011           10 011  E                                                  
0101           10 101  L                                                  
0111           10 111  R                                                  
1000           01 000  0                                                  
1001           01 001  1                                                  
110x           01 100  N                                                  
101x           01 010  P                                                  
111x           11 110  S                                                  
______________________________________                                    
encode.sub.-- 2(E) is defined by the following table:                     
D(d+1)    D(d)                                                            
43 210    43 210                                                          
E                     F[0]     which                                      
98 765    43 210      65 43210 represents                                 
______________________________________                                    
00 000    00 000      11 10000 m0,m0                                      
00 000    00 001      11 10001 m0,m1                                      
00 000    01 xxx      11 10001 m0,m1                                      
00 000    1x xxx      11 10001 m0,m1                                      
00 001    00 000      11 10011 m1,m0                                      
00 001    00 001      11 10111 m1,m1                                      
00 001    01 xxx      11 10111 m1,m1                                      
00 001    1x xxx      11 10111 m1,m1                                      
10 011    1x xxx      10 11000 E,E                                        
10 011    0x xxx      10 11000 E,E                                        
10 101    1x xxx      10 11001 L,L                                        
10 101    0x xxx      10 11001 L,L                                        
10 111    1x xxx      10 11011 R,R                                        
10 111    0x xxx      10 11011 R,R                                        
01 000    01 000      01 10000 0,0                                        
01 000    01 001      01 10001 0,1                                        
01 001    01 000      01 10011 1,0                                        
01 001    01 001      01 10111 1,1                                        
01 000    01 100      01 11010 0,N                                        
01 001    01 100      01 11011 1,N                                        
01 100    01 000      01 11000 N,0                                        
01 100    01 001      01 11001 N,1                                        
01 100    01 100      01 11111 N,N                                        
01 010    01 010      01 10100 P,P                                        
11 110    1x xxx      00 00000 S,S                                        
11 110    0x xxx      00 00000 S,S                                        
______________________________________                                    
 
    
     
                                           APPENDIX D1                             
__________________________________________________________________________
1 bit/symbol - Logical Equation Form of the Interfaces                    
__________________________________________________________________________
Modem Interface Equations                                                 
Inputs:                                                                   
      Tx&#39;Clk, Rx&#39;Clk, Rx&#39;Sym.sub.3, Rx&#39;Sym.sub.2, Rx&#39;Sym.sub.1,           
      Rx&#39;Sym.sub.0 ; /T.sub.3, /T.sub.2, /T.sub.1, /T.sub.0               
Outputs:                                                                  
      TClk, RClk, R.sub.3, R.sub.2, R.sub.1, R.sub.0 ; Tx&#39;Sym.sub.3,      
      Tx&#39;Sym.sub.2, Tx&#39;Sym.sub.1, Tx&#39;Sym.sub.0                            
RClk  :=                                                                  
        Rx&#39;Clk                                                            
bus clock = modem clock                                                   
R.sub.3                                                                   
      :=                                                                  
        Rx&#39;Sym.sub.3                                                      
R.sub.2                                                                   
      :=                                                                  
        Rx&#39;Sym.sub.2                                                      
R.sub.1                                                                   
      :=                                                                  
        Rx&#39;Sym.sub.1                                                      
R.sub.0                                                                   
      :=                                                                  
        Rx&#39;Sym.sub.0                                                      
TClk  :=                                                                  
        Tx&#39;Clk                                                            
bus clock = modem clock                                                   
register to record T-bus state at end of IFB assertion cycle              
U.sub.0                                                                   
      :=                                                                  
        T.sub.0                     ↑TClk                           
U.sub.1                                                                   
      :=                                                                  
        T.sub.1                     ↑TClk                           
U.sub.2                                                                   
      :=                                                                  
        T.sub.2                     ↑TClk                           
U.sub.3                                                                   
      :=                                                                  
        T.sub.3                     ↑TClk                           
IFA state                                                                 
K.sub.0                                                                   
      :=                                                                  
        reset +  /U.sub.3 ·/U.sub.2                              
                                    ↓TClk                          
K.sub.1                                                                   
      :=                                                                  
        /reset·U.sub.3 ·/U.sub.2 ·K.sub.0 +    
        /reset ·U.sub.3 ·K.sub.1 + /reset               
        ·U.sub.2 ·K.sub.1                               
                                    ↓TClk                          
K.sub.2                                                                   
      :=                                                                  
        /reset·U.sub.2 ·K.sub.0 + /reset                
        ·U.sub.3 ·K.sub.2 + /reset ·U.sub.2    
        ·K.sub.2           ↓TClk                          
      + /reset ·U.sub.2 ·U.sub.1 ·U.sub.0      
        ·K.sub.3                                                 
K.sub.3                                                                   
      :=                                                                  
        /reset ·U.sub.3 ·K.sub.2 + /reset               
        ·U.sub.2 ·K.sub.2 + /reset ·U.sub.2    
        ·U.sub.1 ·U.sub.0 ·K.sub.3             
                                    ↓TClk                          
decoded T-bus symbol; IFA output to modem                                 
Tx&#39;Sym.sub.0                                                              
      :=                                                                  
        U.sub.3 ·/U.sub.2 ·/U.sub.1 ·U.sub.0   
        ·K.sub.1 + U.sub.3 ·K.sub.2 + U.sub.3 ·
        U.sub.0 ·K.sub.3   ↓Tx&#39;Clk                        
Tx&#39;Sym.sub.1                                                              
      :=                                                                  
        /U.sub.3 ·/U.sub.2 ·/U.sub.1 ·/U.sub.0 
        + U.sub.3 ·K.sub.0 + U.sub.3 ·/U.sub.2 .multidot
        .U.sub.1 ·K.sub.1  ↓Tx&#39;Clk                        
      + U.sub.3 ·/U.sub.2 ·U.sub.1 ·K.sub.2 +  
        U.sub.3 ·/U.sub.2 ·/U.sub.0 ·K.sub.2   
Tx&#39;Sym.sub.2                                                              
      :=                                                                  
        /U.sub.3 ·/U.sub.2 ·/U.sub.1 ·/U.sub.0 
        + U.sub.3 ·U.sub.2 ·K.sub.0 + U.sub.3 ·
        U.sub.2 ·K.sub.1   ↓Tx&#39;Clk                        
      + U.sub.3 ·/U.sub.2 ·U.sub.0 ·K.sub.2    
Tx&#39;Sym.sub.3                                                              
      :=                                                                  
        /U.sub.3 ·/U.sub.2 ·/U.sub.1 ·/U.sub.0 
        + U.sub.3 ·K.sub.0 + U.sub.3 ·K.sub.1           
                                    ↓Tx&#39;Clk                        
Modem Eliminator Equations                                                
Inputs:                                                                   
      local clock, /T.sub.3, /T.sub.2, /T.sub.1, /T.sub.0                 
Outputs:                                                                  
      TClk, RClk, R.sub.3, R.sub.2, R.sub.1, R.sub.0                      
RClk  = TClk := local oscillator                                          
register to record T-bus state at end of IFB assertion cycle              
U.sub.0                                                                   
      :=                                                                  
        T.sub.0                     ↑TClk                           
U.sub.1                                                                   
      :=                                                                  
        T.sub.1                     ↑TClk                           
U.sub.2                                                                   
      :=                                                                  
        T.sub.2                     ↑TClk                           
U.sub.3                                                                   
      :=                                                                  
        T.sub.3                     ↑TClk                           
IFA state                                                                 
K.sub.0                                                                   
      :=                                                                  
        reset + /U.sub.3 ·/U.sub.2                               
                                    ↓TClk                          
K.sub.1                                                                   
      :=                                                                  
        /reset·U.sub.3 ·/U.sub.2 ·K.sub.0 +    
        /reset ·U.sub.3 ·K.sub.1 + /reset               
        ·U.sub.2 ·K.sub.1                               
                                    ↓TClk                          
K.sub.2                                                                   
      :=                                                                  
        /reset·U.sub.2 ·K.sub.0 + /reset                
        ·U.sub.3 ·K.sub.2 + /reset ·U.sub.2    
        ·K.sub.2           ↓TClk                          
      + /reset ·U.sub.2 ·U.sub.1 ·U.sub.0      
        ·K.sub.3                                                 
K.sub.3                                                                   
      :=                                                                  
        /reset ·U.sub.3 ·K.sub.2 + /reset               
        ·U.sub.2 ·K.sub.2 + /reset ·U.sub.2    
        ·U.sub.1 ·U.sub.0 ·K.sub.3             
                                    ↓TClk                          
decoded T-bus symbol, recoded for loopback on R-bus; IFA loopback output  
to IFB                                                                    
R.sub.0                                                                   
      :=                                                                  
        U.sub.3 ·/U.sub.1 ·U.sub.0 ·K.sub.1 +  
        U.sub.3 ·K.sub.2 + U.sub.3 ·U.sub.0 ·K.
        sub.3                       ↓TClk                          
R.sub.1                                                                   
      :=                                                                  
        /U.sub.3 + U.sub.3 ·U.sub.2 ·K.sub.0 + U.sub.3  
        ·/U.sub.2 ·K.sub.2                              
                                    ↓TClk                          
R.sub.2                                                                   
      :=                                                                  
        /U.sub.3 + U.sub.3 ·U.sub.2 + U.sub.3 ·K.sub.3  
                                    ↓TClk                          
R.sub.3                                                                   
      :=                                                                  
        /U.sub.3 + U.sub.3 ·K.sub.0 + U.sub.3 ·K.sub.1  
                                    ↓TClk                          
TBC Interface Equations                                                   
Inputs:                                                                   
      RClk, R.sub.3, R.sub.2, R.sub.1, R.sub.0, I.sub.3 A, I.sub.1        
Outputs:                                                                  
      /RxClk, /RxSym.sub.3, /RxSym.sub.2, /RxSym.sub.1, /RxSym.sub.0      
RxClk :=                                                                  
        /RClk                                                             
inverted clock for TBC                                                    
IFB T-bus state synchronized for R-bus use                                
J.sub.1                                                                   
      :=                                                                  
        I.sub.1                                                           
synchronizer!!                      ↑RClk                           
J.sub.3                                                                   
      :=                                                                  
        I.sub.3 A                                                         
synchronizer!!                                                            
      ↑RClk                                                         
IFB output to TBC                                                         
RxSym.sub.0                                                               
      :=                                                                  
        J.sub.3 ·/J.sub.1 ·R.sub.0 + /J.sub.3 ·
        R.sub.2 ·R.sub.0 + /R.sub.3 ·R.sub.2 ·R
        .sub.1 ·R.sub.0    ↑RClk                           
RxSym.sub.1                                                               
      :=                                                                  
        J.sub.3 ·/J.sub.1 ·R.sub.1 + /J.sub.3 ·
        R.sub.2 ·R.sub.1 + /R.sub.3 ·R.sub.2 ·R
        .sub.1 ·R.sub.0    ↑RClk                           
      + /J.sub.3 ·/R.sub.3 ·/R.sub.2 + /J.sub.3         
        ·/R.sub.3 ·/R.sub.1 + /J.sub.3 ·/R.sub.
        3 ·/R.sub.0                                              
RxSym.sub.2                                                               
      :=                                                                  
        J.sub.3 ·/J.sub.1 ·R.sub.2 + /J.sub.3 ·
        R.sub.2 + /R.sub.3 ·R.sub.2 ·R.sub.1 ·R
        .sub.0                      ↑RClk                           
      + J.sub.3 ·J.sub.1 ·R.sub.3 + J.sub.3 ·J.
        sub.1 ·/R.sub.2 + J.sub.3 ·J.sub.1 ·/R.
        sub.1 + J.sub.3 ·J.sub.1 ·/R.sub.0              
RxSym.sub.3                                                               
      :=                                                                  
        J.sub.3 ·/J.sub.1 ·R.sub.3 + /J.sub.3 ·
        R.sub.3 ·R.sub.2   ↑RClk                           
      + /J.sub.3 ·/R.sub.3 ·/R.sub.2 + /J.sub.3         
        ·/R.sub.3 ·/R.sub.1 + J.sub.3 ·/R.sub.3
         ·/R.sub.0                                               
Inputs:                                                                   
      TClk, /T.sub.3, /T.sub.2, /T.sub.1, /T.sub.0, TxSym.sub.3,          
      TxSym.sub.2, TxSym.sub.1, TxSym.sub.0                               
Outputs:                                                                  
      TxClk, /T.sub.3 out, /T.sub.2 out, /T.sub.1 out, /T.sub.0 out,      
      I.sub.3 A, I.sub.1                                                  
TxClk :=                                                                  
        TClk                                                              
clock for TBC                                                             
dTClk :=                                                                  
        ////TClk                                                          
delayed version of TClk                                                   
three-stage shift register holding recoded symbols for possible T-bus     
transmission                                                              
F[0].sub.0                                                                
      :=                                                                  
        /Tx.sub.2 ·/Tx.sub.1 ·Tx.sub.0 + /Tx.sub.3      
        ·Tx.sub.2 + Tx.sub.3 ·/Tx.sub.2 ·Tx.sub
        .1 + Tx.sub.3 ·Tx.sub.2 ·/Tx.sub.1              
                                    ↑TClk                           
F[0].sub.1                                                                
      :=                                                                  
        /Tx.sub. 3 ·Tx.sub.2 ·Tx.sub.1 + Tx.sub.3       
        ·/Tx.sub.2 ·Tx.sub.1 + Tx.sub.3 ·Tx.sub
        .2 ·/Tx.sub.1      ↑TClk                           
F[0].sub.2                                                                
      :=                                                                  
        Tx.sub.3 ·Tx.sub.2 ·/Tx.sub.1                   
                                    ↑TClk                           
F[0].sub.3                                                                
      :=                                                                  
        /Tx.sub.3 + /Tx.sub.2 + /Tx.sub.1                                 
                                    ↑TClk                           
F[0].sub.4                                                                
      :=                                                                  
        /Tx.sub.3 ·/Tx.sub.2 ·/Tx.sub.1 + Tx.sub.3      
        ·/Tx.sub.2 + Tx.sub.3 ·/Tx.sub.1                
                                    ↑TClk                           
F[0].sub.5                                                                
      :=                                                                  
        /Tx.sub.3                   ↑TClk                           
F[1].sub.0                                                                
      :=                                                                  
        F[0].sub.0                  ↑TClk                           
F[1].sub.1                                                                
      :=                                                                  
        F[0].sub.1                  ↑TClk                           
F[1].sub.2                                                                
      :=                                                                  
        F[0].sub.2                  ↑TClk                           
F[1].sub.3                                                                
      :=                                                                  
        F[0].sub.3                  ↑TClk                           
F[1].sub.4                                                                
      :=                                                                  
        F[0].sub.4                  ↑TClk                           
F[1].sub.5                                                                
      :=                                                                  
        F[0].sub.5                  ↑TClk                           
F[2].sub.0                                                                
      :=                                                                  
        F[1].sub.0                  ↑TClk                           
F[2].sub.1                                                                
      :=                                                                  
        F[1] .sub.1                 ↑TClk                           
F[2].sub.2                                                                
      :=                                                                  
        F[1].sub.2                  ↑TClk                           
F[2].sub.3                                                                
      :=                                                                  
        F[1].sub.3                  ↑TClk                           
F[2].sub.4                                                                
      :=                                                                  
        F[1].sub.4                  ↑TClk                           
F[2].sub.5                                                                
      :=                                                                  
        F[1].sub.5                  ↑TClk                           
control of F[f] &#34;digital delay-line&#34; depth via 2-bit synchronous counter  
f.clear                                                                   
      :=                                                                  
        reset + /wd + F[f].sub.5 + F[f].sub.4 + I.sub.3                   
                                    ↑dTClk                          
f.inc :=                                                                  
        /reset·F[f].sub.5 ·F[f].sub.4 ·/I.sub.2
         ·/I.sub.1 ·/I.sub.0                            
                                    ↑dTClk                          
      + /reset ·F[f].sub.5 ·F[f].sub.4 ·wd +   
        /reset·F[f].sub.5·F[f].sub.4 ·/I.sub.3 
        ·/I.sub.2 ·I.sub.1                              
IFB state                                                                 
I.sub.0                                                                   
      :=                                                                  
        /reset·/F[f].sub.5 ·F[f].sub.4                  
                                    ↑dTClk                          
I.sub.1                                                                   
      :=                                                                  
        /reset·F[f].sub.5  ↑dTClk                          
I.sub.2                                                                   
      :=                                                                  
        /reset·F[f].sub.5 ·F[f].sub.4 ·/I.sub.3
         ·I.sub.1          ↑dTClk                          
I.sub.3                                                                   
      :=                                                                  
        /reset·(F[f].sub.5 + F[f].sub.4)·(I.sub.3 +     
        /wd)                        ↑dTClk                          
I.sub.3 A                                                                 
      :=                                                                  
        /reset·F[f].sub.5 ·(I.sub.3 + /wd)              
== glitch-free I.sub.1 · I.sub.3                                 
                                    ↑dTClk                          
IFB output to T-bus                                                       
S.sub.1                                                                   
      :=                                                                  
        /reset·/I.sub.1 ·/I.sub.0 ·/F[f].sub.5 
        ·F[f].sub.4                                              
      + /reset·I.sub.3 ·I.sub.0 ·/F[f].sub.5   
        ·F[f].sub.4                                              
S.sub.2                                                                   
      :=                                                                  
        /reset·/I.sub.1 ·/I.sub.0 ·F[f].sub.5  
      + /reset·/I.sub.3 ·/I.sub.2 ·I.sub.1     
        ·F[f].sub.5 ·F[f].sub.4                         
      + /reset·I.sub.2 ·F[f].sub.5 ·/F[f].sub.4
S.sub.3                                                                   
      :=                                                                  
        /reset·/I.sub.3 ·I.sub.0 ·/F[f].sub.5  
        · F[f].sub.4                                             
      + /reset·/I.sub.3 ·/I.sub.2 ·I.sub.1     
        ·F[f].sub.5 ·/F[f].sub.4                        
      + /reset·I.sub.2 ·F[f].sub.5 ·F[f].sub.4 
T.sub.0 out                                                               
      :=                                                                  
        wd· ( s.sub.1 + s.sub.2 + s.sub.3 ·F[f].sub.0   
                                    ↑dTClk                          
T.sub.1 out                                                               
      :=                                                                  
        wd· ( s.sub.1 + S.sub.2 + s.sub.3 ·F[f].sub.1   
                                    ↑dTClk                          
T.sub.2 out                                                               
      :=                                                                  
        wd· ( s.sub.2 + s.sub.3 ·F[f].sub.2             
                                    ↑dTClk                          
T.sub.3 out                                                               
      :=                                                                  
        wd· ( s.sub.1 + s.sub.2 + s.sub.3 ·F[f].sub.3   
                                    ↑dTClk                          
IFB assessment of whether its asserted T-bus symbol was dominant          
wd    :=                                                                  
        (T.sub.0 ·T.sub.0 out + /T.sub.0 ·/T.sub.0      
        out)                        ↑TClk                           
      ·                                                          
        (T.sub.1 ·T.sub.1 out + /T.sub. 1 ·/T.sub.1     
        out)                                                              
      ·                                                          
        (T.sub.2 ·T.sub.2 out + /T.sub.2 ·/T.sub.2 out) 
      ·                                                          
        (T.sub.3 ·T.sub.3 out + /T.sub.3 ·/T.sub.3      
__________________________________________________________________________
        out)                                                              
 
    
     
                                           APPENDIX D2                             
__________________________________________________________________________
2 bits/symbol - Logical Equation Form of the Interfaces                   
__________________________________________________________________________
Modem Interface Equations                                                 
Inputs:                                                                   
       Tx&#39;Clk, Rx&#39;Clk, Rx&#39;Sym.sub.3, Rx&#39;Sym.sub.2, Rx&#39;Sym.sub.1,          
       Rx&#39;Sym.sub.0 ; /T.sub.4, /T.sub.3, /T.sub.2, /T.sub.1, /T.sub.0    
Outputs:                                                                  
       TClk, RClk, R.sub.3, R.sub.2, R.sub.1, R.sub.0 ; Tx&#39;Sym.sub.3,     
       Tx&#39;Sym.sub.2, Tx&#39;Sym.sub.1, Tx&#39;Sym.sub.0                           
RClk   :=                                                                 
         Rx&#39;Clk                                                           
bus clock = modem clock                                                   
R.sub.3                                                                   
       :=                                                                 
         Rx&#39;Sym.sub.3                                                     
R.sub.2                                                                   
       :=                                                                 
         Rx&#39;Sym.sub.2                                                     
R.sub.1                                                                   
       :=                                                                 
         Rx&#39;Sym.sub.1                                                     
R.sub.0                                                                   
       :=                                                                 
         Rx&#39;Sym.sub.0                                                     
TClk   :=                                                                 
         Tx&#39;Clk                                                           
modem clock                                                               
TClk2  :=                                                                 
         /TClk2                                                           
half-frequency T-bus clock                                                
       ↓TClk                                                       
register to record T-bus state at end of IFB assertion cycle              
U.sub.0                                                                   
       :=                                                                 
         T.sub.0                       ↑TClk2                       
U.sub.1                                                                   
       :=                                                                 
         T.sub.1                       ↑TClk2                       
U.sub.2                                                                   
       :=                                                                 
         T.sub.2                       ↑TClk2                       
U.sub.3                                                                   
       :=                                                                 
         T.sub.3                       ↑TClk2                       
U.sub. 4                                                                  
       :=                                                                 
         T.sub.4                       ↑TClk2                       
IFA state                                                                 
K.sub.0                                                                   
       :=                                                                 
         reset + /U.sub.4 ·/U.sub.3                              
                                       ↑(TClk * TClk2)              
K.sub.1                                                                   
       :=                                                                 
         /reset·U.sub.4 ·/U.sub.3 ·K.sub.0 +   
         /reset ·U.sub.4 ·K.sub.1 + /reset              
         ·U.sub.3 ·K.sub.1                              
                                       ↑(TClk * TClk2)              
K.sub.2                                                                   
       :=                                                                 
         /reset·U.sub.3 ·K.sub.0 + /reset               
         ·U.sub.4 ·K.sub.2 + /reset ·U.sub.3   
         ·K.sub.2             ↑(TClk * TClk2)              
decoded T-bus symbol pair                                                 
W.sub.0                                                                   
       :=                                                                 
         U.sub.3 ·/U.sub.2 ·/U.sub.1 ·U.sub.0  
         ·K.sub.1 + U.sub.4 ·/U.sub.3 ·/U.sub.2
          ·/U.sub.1 ·U.sub.0 ·/K.sub.0         
                                       ↑(TClk * TClk2)              
       + /U.sub.3 ·U.sub.2 ·U.sub.1 ·/K.sub.0  
         + U.sub.3 ·K.sub.2                                      
W.sub.4                                                                   
       :=                                                                 
         U.sub.3 ·/U.sub.2 ·U.sub.1 ·U.sub.0   
         ·K.sub.1 + U.sub.4 ·/U.sub. 3 ·/U.sub.
         2 ·U.sub.1 ·/K.sub.0                           
                                       ↑(TClk * TClk2)              
       + /U.sub.3 ·U.sub.2 ·U.sub.1 ·/K.sub.0  
         + U.sub.3 ·K.sub.2                                      
W.sub.5 := W.sub.1                                                        
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·K.sub.0 +        
         /U.sub.3 ·U.sub.2 ·/U.sub.1 ·K.sub.1  
                                       ↑(TClk * TClk2)              
       + U.sub.3 ·U.sub.2 ·K.sub.2 + U.sub.3 ·U
         .sub.1 ·K.sub.2 + U.sub.3 ·/U.sub.0 ·K
         .sub.2                                                           
W.sub.2                                                                   
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·U.sub.3 .multidot
         .K.sub.0 + U.sub.3 ·U.sub.2 ·K.sub.1           
                                       ↑(TClk * TClk2)              
       + U.sub.3 ·/U.sub.2 ·U.sub.1 ·K.sub.1 + 
         U.sub.3 ·/U.sub.2 ·U.sub.0 ·K.sub.2   
W.sub.6                                                                   
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·U.sub.3 .multidot
         .K.sub.0 + U.sub.3 ·U.sub.2 ·K.sub.1           
                                       ↑(TClk * TClk2)              
       + U.sub.3 ·/U.sub.2 ·/U.sub.1 ·K.sub.1  
         + U.sub.3 ·/U.sub.2 ·U.sub.0 ·K.sub.2 
W.sub.7 := W.sub.3                                                        
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·K.sub.0 +        
         /U.sub.3 ·U.sub.2 ·/U.sub.1 ·K.sub.1  
         + U.sub.3 ·K.sub.1   ↑(TClk * TClk2)              
       + U.sub.4 ·/U.sub.3 ·/U.sub.2 ·K.sub.1  
         ·/K.sub.0 + /U.sub.3 ·U.sub.2 ·U.sub.1
          ·K.sub.1 ·/K.sub.0                            
IFA output to modem                                                       
Tx&#39;Sym.sub.0                                                              
       :=                                                                 
         W.sub.4 ·TClk2 + W.sub.0 ·/TClk2               
                                       ↓Tx&#39;Clk                     
Tx&#39;Sym.sub.1                                                              
       :=                                                                 
         W.sub.5 ·TClk2 + W.sub.1 ·/TClk2               
                                       ↓Tx&#39;Clk                     
Tx&#39;Sym.sub.2                                                              
       :=                                                                 
         W.sub.6 ·TClk2 + W.sub.2 ·/TClk2               
                                       ↓Tx&#39;Clk                     
Tx&#39;Sym.sub.3                                                              
       :=                                                                 
         W.sub.7 ·TClk2 + W.sub.3 ·/TClk2               
                                       ↓Tx&#39;Clk                     
 Modem Eliminator Equations                                               
Inputs:                                                                   
       local clock, /T4, /T.sub.3, /T.sub.2, /T.sub.1, /T.sub.0           
Outputs:                                                                  
       TClk, RClk, R.sub.3, R.sub.2, R.sub.1, R.sub.0                     
RClk   = TClk := local oscillator                                         
TClk2  :=                                                                 
         /TClk2                                                           
half-frequency T-bus clock                                                
       ↓TClk                                                       
register to record T-bus state at end of IFB assertion cycle              
U.sub.0                                                                   
       :=                                                                 
         T.sub.0                       ↑TClk2                       
U.sub.1                                                                   
       :=                                                                 
         T.sub.1                       ↑TClk2                       
U.sub.2                                                                   
       :=                                                                 
         T.sub.2                       ↑TClk2                       
U.sub.3                                                                   
       :=                                                                 
         T.sub.3                       ↑TClk2                       
U.sub.4                                                                   
       :=                                                                 
         T.sub.4                       ↑TClk2                       
IFA state                                                                 
K.sub.0                                                                   
       :=                                                                 
         reset + /U.sub.4 ·/U.sub.3                              
                                       ↑(TClk * TClk2)              
K.sub.1                                                                   
       :=                                                                 
         /reset·U.sub.4 ·/U.sub.3 ·K.sub.0 +   
         /reset ·U.sub.4 ·K.sub.1 + /reset              
         ·U.sub.3 ·K.sub.1                              
                                       ↑(TClk * TClk2)              
K.sub.2                                                                   
       :=                                                                 
         /reset·U.sub.3 ·K.sub.0 + /reset               
         ·U.sub.4 ·K.sub.2 + /reset ·U.sub.3   
         ·K.sub.2             ↑(TClk * TClk2)              
decoded T-bus symbol pair, recoded for loopback on R-bus                  
W.sub.0                                                                   
       :=                                                                 
         U.sub.3 ·/U.sub.2 ·/U.sub.1 ·U.sub.0  
         ·K.sub.1 + U.sub.4 ·/U.sub.3 ·/U.sub.2
          ·/U.sub.1 ·U.sub.0 ·K.sub.1          
                                       ↑(TClk * TClk2)              
       + /U.sub.3 ·U.sub.2 ·U.sub.1 ·/K.sub.1  
W.sub.4                                                                   
       :=                                                                 
         U.sub.3 ·/U.sub.2 ·U.sub.1 ·U.sub.0   
         ·K.sub.1 + U.sub.4 ·/U.sub.3 ·/U.sub.2
          ·U.sub.1 ·K.sub.1                             
                                       ↑(TClk * TClk2)              
       + /U.sub.3 ·U.sub.2 ·U.sub.1 ·/K.sub.1  
W.sub.5 := W.sub.1                                                        
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·/U.sub.3         
         ·K.sub.2             ↑(TClk * TClk2)              
W.sub.2                                                                   
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·U.sub.3 .multidot
         .K.sub.0 + U.sub.3 ·U.sub.2 ·K.sub.1           
                                       ↑(TClk * TClk2)              
       + U.sub.3 ·/U.sub.2 ·U.sub.1 ·K.sub.1 + 
         U.sub.3 ·K.sub.2                                        
W.sub.6                                                                   
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·U.sub.3 .multidot
         .K.sub.0 + U.sub.3 ·U.sub.2 ·K.sub.1           
                                       ↑(TClk * TClk2)              
       + U.sub.3 ·/U.sub.2 ·/U.sub.1 ·K.sub.1  
         + U.sub.3 ·K.sub.2                                      
W.sub.7 := W.sub.3                                                        
       :=                                                                 
         /U.sub.4 ·/U.sub.3 + U.sub.4 ·K.sub.0 +        
         U.sub.3 ·K.sub.1     ↑(TClk * TClk2)              
       + U.sub.4 ·/U.sub.3 ·/U.sub.2 ·K.sub.1  
         + /U.sub.3 ·U.sub.2 ·K.sub.1                   
IFA loopback output to IFB                                                
R.sub.0                                                                   
       :=                                                                 
         W.sub.4 ·TClk2 + W.sub.0 ·/TClk2               
                                       ↓Tx&#39;Clk                     
R.sub.1                                                                   
       :=                                                                 
         W.sub.5 ·TClk2 + W.sub.1 ·/TClk2               
                                       ↓Tx&#39;Clk                     
R.sub.2                                                                   
       :=                                                                 
         W.sub.6 ·TClk2 + W.sub.2 ·/TClk2               
                                       ↓Tx&#39;Clk                     
R.sub.3                                                                   
       :=                                                                 
         W.sub.7 ·TClk2 + W.sub.3 ·/TClk2               
                                       ↓Tx&#39;Clk                     
TBC Interface Equations                                                   
Inputs:                                                                   
       RClk, R.sub.3, R.sub.2, R.sub.1, R.sub.0, I.sub.3 A, I.sub.1       
Outputs:                                                                  
       /RxClk, /RxSym.sub.3, /RxSym.sub.2, /RxSym.sub.1, /RxSym.sub.0     
RxClk  :=                                                                 
         /RClk                                                            
inverted clock for TBC                                                    
IFB T-bus state synchronized for R-bus use                                
J.sub.1                                                                   
       :=                                                                 
         I.sub.1                                                          
synchronizer!!                         ↑RClk                        
J.sub.3                                                                   
       :=                                                                 
         I.sub.3 A                                                        
synchronizer!!                                                            
       ↑RClk                                                        
IFB output to TBC                                                         
RxSym.sub.0                                                               
       :=                                                                 
         J.sub.3 ·/J.sub.1 ·R.sub.0 + /J.sub.3 .multidot
         .R.sub.2 ·R.sub.0 + /R.sub.3 ·R.sub.2 .multidot
         .R.sub.1 ·R.sub.0    ↑RClk                        
RxSym.sub.1                                                               
       :=                                                                 
         J.sub.3 ·/J.sub.1 ·R.sub.1 + /J.sub.3 .multidot
         .R.sub.2 ·R.sub.1 + /R.sub.3 ·R.sub.2 .multidot
         .R.sub.1 ·R.sub.0    ↑RClk                        
       + /J.sub.3 · /R.sub.3 ·/R.sub.2 + /J.sub.3       
         ·/R.sub.3 ·/R.sub.1 +/J.sub.3 ·/R.sub.
         3 ·/R.sub.0                                             
RxSym.sub.2                                                               
       :=                                                                 
         J.sub.3 ·/J.sub.1 ·R.sub.2 + /J.sub.3 .multidot
         .R.sub.2 + /R.sub.3 ·R.sub.2 ·R.sub.1 .multidot
         .R.sub.0                      ↑RClk                        
       + J.sub.3 ·J.sub.1 ·R.sub.3 + J.sub.3 ·J
         .sub.1 ·/R.sub.2 + J.sub.3 ·J.sub.1 ·/
         R.sub.1 + J.sub.3 ·J.sub.1 ·/R.sub.0           
RxSym.sub.3                                                               
       :=                                                                 
         J.sub.3 ·/J.sub.1 ·R.sub.3 + /J.sub.3 .multidot
         .R.sub.3 ·R.sub.2    ↑RClk                        
       + /J.sub.3 ·/R.sub.3 ·/R.sub.2 + /J.sub.3        
         ·/R.sub.3 ·/R.sub.1 +/J.sub.3 ·/R.sub.
         3 ·/R.sub.0                                             
Inputs:                                                                   
       TClk, /T.sub.4, /T.sub.3, /T.sub.2, /T.sub.1, /T.sub.0,            
       TxSym.sub.3, TxSym.sub.2, TxSym.sub.1, Tx Sym.sub.0                
Outputs:                                                                  
       TxClk, /T.sub.4 out, /T.sub. 3 out, /T.sub.2 out, /T.sub.1 out,    
       /T.sub.0 out, I.sub.3 A, I.sub.1                                   
TxClk  :=                                                                 
         TClk                                                             
non-inverted clock for TBC                                                
TClk2  :=                                                                 
         TClk2                                                            
dTClk2 :=                                                                 
         ////TClk2                                                        
delayed version of TClk2                                                  
three-stage shift register holding slightly-recoded TBC output            
D[1].sub.0                                                                
       :=                                                                 
         /Tx.sub.3 ·Tx.sub.2 + /Tx.sub.3 ·Tx.sub.1 +    
         /Tx.sub.2 ·/Tx.sub.1 ·Tx.sub.0                 
                                       ↑TxClk                       
D[1].sub.1                                                                
       :=                                                                 
         Tx.sub.1                      ↑TxClk                       
D[1].sub.2                                                                
       :=                                                                 
         Tx.sub.2                      ↑TxClk                       
D[1].sub.3                                                                
       :=                                                                 
         Tx.sub.3                      ↑TxClk                       
D[1].sub.4                                                                
       :=                                                                 
         /Tx.sub.3 ·Tx.sub.2 + /Tx.sub.3 ·Tx.sub.1 +    
         Tx.sub.2 ·Tx.sub.1   ↑TxClk                       
D[2].sub.0                                                                
       :=                                                                 
         D[1].sub.0                    ↑TxClk                       
D[2].sub.1                                                                
       :=                                                                 
         D[1].sub.1                    ↑TxClk                       
D[2].sub.2                                                                
       :=                                                                 
         D[1].sub.2                    ↑TxClk                       
D[2].sub.3                                                                
       :=                                                                 
         D[1].sub.3                    ↑TxClk                       
D[2].sub.4                                                                
       :=                                                                 
         D[1].sub.4                    ↑TxClk                       
D[3].sub.0                                                                
       :=                                                                 
         D[2].sub.0                    ↑TxClk                       
D[3].sub.1                                                                
       :=                                                                 
         D[2].sub.1                    ↑TxClk                       
D[3].sub.2                                                                
       :=                                                                 
         D[2].sub.2                    ↑TxClk                       
D[3].sub.3                                                                
       :=                                                                 
         D[2].sub.3                    ↑TxClk                       
D[3].sub.4                                                                
       :=                                                                 
         D[2].sub.4                    ↑TxClk                       
multiplexer on three-stage shift register output, and its control         
d      :=                                                                 
         /reset·/d ·D[2].sub.4 ·/D[1].sub.4 +  
         /reset·d ·D[3].sub.4                           
                                       ↑TxClk                       
E.sub.0                                                                   
       :=                                                                 
         /d ·D[1].sub.0 + d ·D[2 ].sub.0                
E.sub.1                                                                   
       :=                                                                 
         /d ·D[1].sub.1 + d ·D[2 ].sub.1                
E.sub.2                                                                   
       :=                                                                 
         /d ·D[1].sub.2 + d ·D[2 ].sub.2                
E.sub.3                                                                   
       :=                                                                 
         /d ·D[1].sub.3 + d ·D[2 ].sub.3                
E.sub.4                                                                   
       :=                                                                 
         /d ·D[1] .sub.4 + d ·D[2 ].sub.4               
E.sub.5                                                                   
       :=                                                                 
         /d ·D[2].sub.0 + d ·D[3 ].sub.0                
E.sub.6                                                                   
       :=                                                                 
         /d ·D[2].sub.1 + d ·D[3 ].sub.1                
E.sub.7                                                                   
       :=                                                                 
         /d ·D[2].sub.2 + d ·D[3 ].sub.2                
E.sub.8                                                                   
       :=                                                                 
         /d ·D[2].sub.3 + d ·D[3 ].sub.3                
E.sub.9                                                                   
       :=                                                                 
         /d ·D[2].sub.4 + d ·D[3 ].sub.4                
three-stage shift register holding recoded symbol pairs for possible      
T-bus transmission                                                        
F[0].sub.0                                                                
       :=                                                                 
         /E.sub.9 ·/E.sub.8 ·E.sub.5 + /E.sub.9         
         ·/E.sub.8 ·E.sub.4 + /E.sub.9 ·/E.sub.
         8 ·E.sub.3 + /E.sub.9 ·/E.sub.8 ·E.sub
         .0                            ↑TClk2                       
       + E.sub.9 ·/E.sub.8 ·E.sub.7 + /E.sub.9          
         ·E.sub.8 ·E.sub.5 + /E.sub.9 ·E.sub.8 
         ·E.sub.0 + /E.sub.9 ·E.sub.8 ·E.sub.7 
         ·E.sub.2                                                
F[0].sub.1                                                                
       :=                                                                 
         /E.sub.9 ·/E.sub.8 ·E.sub.5 + E.sub.9 .multidot
         ./E.sub.8 ·E.sub.7 ·E.sub.6 + /E.sub.9         
         ·E.sub.8 ·E.sub.5 + /E.sub.9 ·E.sub.8 
         ·E.sub.2             ↑TClk2                       
F[0]2  :=                                                                 
         /E.sub.9 ·/E.sub.8 ·E.sub.5 ·E.sub.4  
         + /E.sub.9 ·/E.sub.8 ·E.sub.5 ·E.sub.4
          + /E.sub.9 ·/E.sub.8 ·E.sub.5 ·E.sub.
         4                             ↑TClk2                       
       + /E.sub.9 ·E.sub.8 ·E.sub.6 + /E.sub.9 .multidot
         .E.sub.8 ·E.sub.7 ·E.sub.2 + /E.sub.9 .multidot
         .E.sub.8 ·/E.sub.7 ·/E.sub.6 ·E.sub.5 
         ·/E.sub.2 ·/E.sub.1 ·E.sub.0          
F[0].sub.3                                                                
       :=                                                                 
         E.sub.9 ·/E.sub.8 + /E.sub.9 ·E.sub.8          
         ·E.sub.7 + /E.sub.9 ·E.sub.8 ·E.sub.2 
                                       ↑TClk2                       
F[0].sub.4                                                                
       :=                                                                 
         /E.sub.8 + /E.sub.7 + /E.sub.6                                   
                                       ↑TClk2                       
F[0].sub.5                                                                
       :=                                                                 
         E.sub.9                       ↑TClk2                       
F[0].sub.6                                                                
       :=                                                                 
         /E.sub.9 ·/E.sub.8 + E.sub.9 ·E.sub.8          
                                       ↑TClk2                       
F[1].sub.0                                                                
       :=                                                                 
         F[0].sub.0                    ↑TClk2                       
F[1].sub.1                                                                
       :=                                                                 
         F[0].sub.1                    ↑TClk2                       
F[1].sub.2                                                                
       :=                                                                 
         F[0].sub.2                    ↑TClk2                       
F[1].sub.3                                                                
       :=                                                                 
         F[0].sub.3                    ↑TClk2                       
F[1].sub.4                                                                
       :=                                                                 
         F[0].sub.4                    ↑TClk2                       
F[1].sub.5                                                                
       :=                                                                 
         F[0].sub.5                    ↑TClk2                       
F[1].sub.6                                                                
       :=                                                                 
         F[0].sub.6                    ↑TClk2                       
F[2].sub.0                                                                
       :=                                                                 
         F[1].sub.0                    ↑TClk2                       
F[2].sub.1                                                                
       :=                                                                 
         F[1].sub.1                    ↑TClk2                       
F[2].sub.2                                                                
       :=                                                                 
         F[1].sub.2                    ↑TClk2                       
F[2].sub.3                                                                
       :=                                                                 
         F[1].sub.3                    ↑TClk2                       
F[ 2].sub.4                                                               
       :=                                                                 
         F[1].sub.4                    ↑TClk2                       
F[2].sub.5                                                                
       :=                                                                 
         F[1].sub.5                    ↑TClk2                       
F[2].sub.6                                                                
       :=                                                                 
         F[1].sub.6                    ↑TClk2                       
control of F[ f ] &#34;digital delay-line&#34; depth via 2-bit synchronous        
counter f                                                                 
f.clear                                                                   
       :=                                                                 
         reset + /wd + F[f].sub.6 + F[f].sub.5 + I.sub.3                  
                                       ↑dTClk2                      
f.inc  :=                                                                 
         /reset·F[f].sub.6 ·F[f].sub.5 ·/I.sub.
         2 ·/I.sub.1 ·/I.sub.0                          
                                       ↑dTClk2                      
       + /reset·F[f].sub.6 ·F[f].sub.5 ·wd +   
         /reset·F[f].sub.6 ·F[f].sub.5 ·/I.sub.
         3 ·/I.sub.2 ·I.sub.1                           
IFB state                                                                 
I.sub.0                                                                   
       :=                                                                 
         /reset· /F[f].sub.6 ·F[f].sub.5                
                                       ↑dTClk2                      
I.sub.1                                                                   
       :=                                                                 
         /reset·F[f].sub.6    ↑dTClk2                      
I.sub.2                                                                   
       :=                                                                 
         /reset·F[f].sub.6 ·F[f].sub.5                  
         ·/I.sub.3 ·I.sub.1                             
                                       ↑dTClk2                      
I.sub.3                                                                   
       :=                                                                 
         /reset·(F[f].sub.6 + F[f].sub.5)·(I.sub.3 +    
         /wd)                          ↑dTClk2                      
I.sub.3 A                                                                 
       :=                                                                 
         /reset·F[f].sub.6 ·(I.sub.3 + /wd)             
== glitch-free I.sub.1 · I.sub.3                                 
                                       ↑dTClk2                      
IFB output to T-bus                                                       
S.sub.1                                                                   
       :=                                                                 
         /reset·/I.sub.1 ·/I.sub.0 ·/F[f].sub.6
          ·F[f].sub.5                                            
       + /reset·I.sub.3 ·I.sub.0 ·/F[f].sub.6  
         ·F[f].sub.5                                             
S.sub.2                                                                   
       :=                                                                 
         /reset·/I.sub.1 ·/I.sub.0 ·F[f].sub.6 
       + /reset·/I.sub.3 ·/I.sub.2 ·I.sub.1    
         ·F[f].sub.6 ·F[f].sub.5                        
       + /reset·I.sub.2 ·F[f].sub.6 ·/F[f].sub.
         5                                                                
S.sub.3                                                                   
       :=                                                                 
         /reset·/I.sub.3 ·I.sub.0 ·/F[f].sub.6 
         ·F[f].sub.5                                             
       + /reset·/I.sub.3 ·/I.sub. 2 ·I.sub.1   
         ·F[f].sub.6 ·/F[f].sub.5                       
       + /reset·I.sub.2 ·F[f].sub.6 ·F[f].sub.5
T.sub.0 out                                                               
       :=                                                                 
         wd· ( s.sub.2 + s.sub.3 ·F[f].sub.0            
                                       ↑dTClk2                      
T.sub.1 out                                                               
       :=                                                                 
         wd· ( s.sub.2 + s.sub.3 ·F[f].sub.1            
                                       ↑dTClk2                      
T.sub.2 out                                                               
       :=                                                                 
         wd· ( s.sub.1 + s.sub.2 + s.sub.3 ·F[f].sub.2  
         )                             ↑dTClk2                      
T.sub.3 out                                                               
       :=                                                                 
         wd· ( s.sub.2 + s.sub.3 ·F[f].sub.3            
                                       ↑dTClk2                      
T.sub.4 out                                                               
       :=                                                                 
         wd· ( s.sub.1 + s.sub.2 + s.sub.3 ·F[f].sub.4  
         )                             ↑dTClk2                      
IFB assessment of whether its asserted T-bus symbol was dominant          
wd     :=                                                                 
         (T.sub.0 ·T.sub.0 out + /T.sub.0 ·/T.sub.0     
         out)                          ↑TClk2                       
       ·                                                         
         (T.sub.1 ·T.sub.1 out + /T.sub.1 ·/T.sub.1     
         out)                                                             
       ·                                                         
         (T.sub.2 ·T.sub.2 out + /T.sub.2 ·/T.sub.2     
         out)                                                             
       ·                                                         
         (T.sub.3 ·T.sub.3 out + /T.sub.3 ·/T.sub.3     
         out)                                                             
       ·                                                         
         (T.sub.4 ·T.sub.4 out + /T.sub.4 ·/T.sub.4     
__________________________________________________________________________
         out)