# Patent

## Title
Coupled multiple output fiber laser

## Abstract

A programmable system for checking for protocol errors in a communication system includes a matrix for generating error checking signals selected by data fields utilized to implement a communication. If the configuration or protocol is changed the system facilitates reprogramming to compensate for the change.

## Background
The present invention relates generally to error checking systems and more particularly relates to programmably checking the intersection matrix of multiple control and identifier fields in digital communication systems.

All digital communication systems require a set of rules, called a protocol, to control communications between different modules in the system. It is well known to implement error checking systems to assure that a particular communication does not violate the protocol.

In many systems a communication includes a handshaking operation to establish a link between two modules. Various data fields are transferred during various phases of an operation that allow the modules to gain control of a communication channel, identify each other and the type of operation to be performed, to verify the readiness of each module to perform the operation, and to transfer data over the communication channel. The protocol specifies the values of data fields that may be generated during each of these phases.

One of the advantages of digital systems is the ability to reconfigure the hardware by adding or deleting modules or functions and to change the protocol to change the field values utilized during the different phases. However, existing error checking function are generally not reconfigurable thereby limiting their utility in digital communication systems.

The present invention is a reconfigurable error checking system for use in digital communication systems. The error checking system utilizes the values of an error checking function to check whether the data fields generated during a particular communication are allowed or forbidden by a communication protocol. The system can be reconfigured by modifying the error checking function.

According to one aspect of the invention, error checking signals are programmably stored and selected by particular combinations of fields generated during a communication operation. The value of the selected error checking signal indicates whether the values of the particular combination of fields is allowed by the protocol.

According to another aspect of the invention, the error checking signals are generated by a hard-wired matrix decoder. The particular error signal generated is selected by a particular combinations of fields generated during a communication operation. If the error signal has a predetermined value then the particular combination of fields is forbidden by the protocol. Row and column mask registers programmably store error mask/configuration signals, having either a masking or non-masking value, which are selected by the fields included in the particular combination. The selected error signal and error mask/configuration signals are provided to a logic circuit which changes the value of the selected error signal if its value is the predetermined value and a selected mask/configuration signal has the masking value.

According to another aspect of the invention, the error checking system is included in every module of a communication system to provide for fault-tolerance to allow checking of the communication channel for errors.

Further features and advantages will become apparent in view of the appended drawings and following detailed description.

FIG. 1 depicts a shared bus communication system including a CPU 10 having several modules that communicate via a shared bus (IBUS) 12.

FIG. 2 depicts the arbitration, command, and data phases of a basic IBUS operation.

FIG. 3 is a block diagram of an embodiment of the present invention which supports full programmability of the error condition to be checked.

FIG. 4 is a block diagram of the second preferred embodiment of the invention.

FIG. 5 depicts a fully programmable error checking matrix.

FIG. 6 depicts a matrix decoder having columns identified by different transfer length values and rows identified by different bus commands.

FIG. 7 depicts a COMMAND/HANDSHAKE hard wired error checking matrix.

The present invention is an error checking system having general utility in many types of digital communication systems. Many of the features of the system can better appreciated when described in the context of a particular bus system. In the following detailed description the error checking system will be described with reference to a bus subsystem utilized in computers manufactured by Tandem Computers, Inc. The bus subsystem will be described only in sufficient detail to support the detailed description of the invention.

FIG. 1 depicts a shared bus communication system including a CPU board 10 having several modules that communicate via a shared bus (IBUS) 12. These modules include a processor interface chip (PIC) 14, a maintenance diagnostic chip (MDC) 16, a memory interface chip (MIC) 18, and two bus interface modules (IPB.sub.-- X and IPB.sub.-- Y) 20 and 22.

The IBUS 12 is synchronous parallel data path over which independent modules may transfer address and data information in a structured environment. The bus operations are synchronous with a basic system clock. All events on the IBUS occur relative to the rising edge of the clock. Two basic operations over the bus are defined; Arbitration and Transfer, each capable of occurring simultaneously.

The Arbitration operation allows one of the modules to become a master to gain sole ownership of the IBUS. Modules desiring to gain ownership of the IBUS (Requestor modules) must arbitrate and gain ownership of the IBUS before attempting to transfer information.

The Transfer operation allows a Requestor that has gained ownership of the IBUS to send data to or receive data from a Responder module and includes Command and Data Phases. During the Command Phase, the Requestor, after arbitrating and gaining ownership of the IBUS, places and address of a selected module on the Address/Data lines and a command on the Handshake lines. During the Data Phase, data is transferred between the Requestor and Responder. The length of the transfer is determined by the Requestor during the Command Phase and can range from a single byte to many words.

FIG. 2 depicts the arbitration, command, and data phases of a basic IBUS operation. Requestors X and Y assert their Arb lines to request ownership of the IBUS and SC (system control) is asserted at CYCLE 1 granting ownership to the bus to Requestor X (which in this example has higher priority than Requestor Y). During the Command Phase, Requestor X drives the high and low addresses of the selected Responder on the Address/Data lines during CYCLE 1 and CYCLE 2 and drives the command (CMD) on the Handshake lines during CYCLE 1 and the length of the data transfer (LENGTH) on the Handshake lines during CYCLE 2. During the Data Phase, data is transferred between the Requestor and Responder on the Address/Data lines during CYCLES 3 and 4. Also, during the Data Phase, the Responder handshakes on the handshake lines with READYODD for the first word in a transfer and READYEVEN for all subsequent words in a transfer.

FIG. 3 is block diagram of an embodiment of the present invention which supports full programmability of the error conditions to be checked. As described above, a bus operation requires the transfer of several data fields which represent information required to implement a data transfer. The bus transfer protocol establishes whether particular values of a pair of fields, M and N, are allowed. For example, the M and N fields may respectively identify a requestor module and responder module. In this case the error checker would be programmed to output a true value if a communication between the particular modules identified by the M and N values were not allowed by the protocol.

Thus, the embodiment of FIG. 3 implements the error checking function: otherwise.

If M is an m-bit data field and N is an n-bit data field then the data fields may encode up to 2.sup.m and 2.sup.n values respectively. The symbols M and N in the above equation represent pairings of the values of a particular pair of M and N fields. Thus, if the values encoded by a particular pair of M and N fields are forbidden by the protocol then the value of the function value is true (T) and if the values are not forbidden the function value is false (F).

Turning to FIG. 3, a fully programmable check matrix 30 is implemented in a gate array. The matrix is formed by scannable registers and has scan.sub.-- data.sub.-- in input and a scan.sub.-- data.sub.-- output. The fields being checked, M and N, have widths m and n respectively. Accordingly, the matrix has 2.sup.n columns and 2.sup.m rows.

The M and N fields generated on the bus are latched at the appropriate time by M and N latches 32 and 34 and are applied, respectively, to a row MUX 35 and a column MUX 36 for selecting a unique row and column corresponding to the applied fields. The selected output is applied to one input of an output AND gate 38 and a timing window signal (optional) is applied to the other input to provide a clocked error signal.

The operation of the embodiment depicted in FIG. 3 will now be described. The F(M,N) values corresponding to a selected hardware configuration and bus transfer protocol are selected and arranged in a scan pattern having 2.sup.n 2.sup.m bit positions. The order of the bits will be determined by the particular scan path established in the matrix. After the scan pattern is read into the matrix through the scan data.sub.-- in input each value of F(M,N) will be stored at the particular storage location selected by the received pair of M and N fields. If the system is reconfigured or protocol is changed a different scan pattern is read into the matrix to reconfigure the error checking system.

FIG. 4 is a block diagram of a second preferred embodiment of the invention which reduces the number of storage elements required in the first embodiment and in many applications reduces the gate count.

In FIG. 4, a matrix decoder logic 40 block receives pairs of M and N signals at its row and column inputs and provides an unmasked error checking signal at its output selected by the received pair of M and N signals. Scannable row and column registers 42 and 44 have a scan.sub.-- data.sub.-- in input and a scan.sub.-- data.sub.-- out output. The scannable row and column registers store "error mask/configuration bits" which are selectable by particular row inputs, column inputs, or row/column cross-section inputs.

The selection of the error mask/configuration bits is performed by an error tree 46 implemented in hardware. The hardware includes a masking AND gate 48 for receiving the selected error mask/configuration bits as gating inputs and the selected unmasked error checking signal as the signal input and provides a maskable error checking signal at its output. The outputs of the masking AND gates are coupled to the input of an OR gate 50 having its output coupled to the input of a timing AND gate 52. The other input of the timing AND gate 52 receives a timing window signal (optional) and its output is a timed error checking signal.

The operation of the embodiment depicted in FIG. 4 will now be described. The predetermined error checking function for a particular protocol is hardwired into the gate array of the matrix decoder logic block. If the selected row and column error checking bits are all TRUE then the masking AND gate 48 is open and maskable error checking signal is equal to the unmasked error checking signal.

Although the error function is hardwired into the matrix decoder logic, the scannable configuration registers 42 and 48 allow the error checking bit for particular received row inputs, column inputs, or row/column intersection inputs to be programmably changed from TRUE to FALSE. As is apparent from FIG. 4, if either the row or column configuration bit for a given M or N field is FALSE then the output of the corresponding masking AND gate is always FALSE. Accordingly, a TRUE unmasked error bit may be programmably changed to FALSE. The converse is not possible however, that is, a FALSE unmasked error bit cannot be programmably changed to TRUE. Thus, a particular row input, column input, or row/column intersection input that was previously forbidden can allowed in the new protocol so specifies by reprogramming the corresponding masking/configuration bits to the masking state.

One of the embodiments depicted in FIGS. 3 and 4 may be more suitable for a particular application. FIGS. 5-7 are diagrams depicting specific applications of the preferred embodiments.

The fully programmable embodiment of FIG. 3 may be better suited to an application having a great deal of flexibility and reconfigurability. For example, the allowable and forbidden responder/requestor pairs may be changed and the fully programmable embodiment may be more suitable.

FIG. 5 depicts a fully programmable error checking matrix. In this configuration the responder ID data field values and requestor ID data field values for a particular bus transaction are utilized as the column and row identifiers. These IDs are generated on the bus during CYCLE 2 (FIG. 2) of the bus transfer. A zero value at the intersection of a particular requestor/responder pair designates that the pair is allowed by the bus protocol. If the protocol were changed the intersection values would be recoded via scan. Note also that if another module were connected, e.g., an asynchronous transfer module, one of the unused rows and columns could be designated for this module and modified error checking signals stored in the designated row or column.

The mask programmable embodiment of FIG. 4 may be better suited to an application having a small degree of flexibility. For example, for a particular protocol certain data types of data transfer operations may be allowable for a small set of data transfer lengths. For another protocol the number of data transfer lengths allowable for some types of data transfers may be changed. These changes can be implemented by reprogramming the configuration bits in the mask registers. FIG. 6 depicts a matrix decoder having columns identified by different transfer length values and rows identified by different bus commands. The diagram includes a mapping pairing the actual field values, i.e., O through F, to the symbolic command and word length parameters. For example, a command field value equal to "6" symbolizes a Block Write command and a transfer length field value equal to "6" symbolizes a 7 word transfer length. The "pre" or "protocol error" areas of the matrix are hardwired to TRUE values and "ok" areas are hardwired to FALSE values.

Referring back to FIG. 2, the CMD and LENGTH handshakes are generated on the handshake line in successive clock cycles. The command field is latched and provided to the error checking decoder when the length field is generated. The advantage of the hard-wired embodiment to reduce gate count is now apparent. Note that for row inputs 8 through F transfers for less than one word are defined by the command field. Accordingly, a protocol error is defined for the row/column intersection of rows 8 through F and columns 1 through F because columns i through F are for transfer lengths of greater than one word. Thus, a simple gate configuration generates the error checking signal for 120 possible row/column intersections.

The versatility of the masking function is also demonstrated. For example, in the matrix of FIG. 6 the row inputs 2, 4, and 5 are undefined commands that produce unmasked error checking signals when received. However, if the row input 4 were later defined as a command that transferred 1 to 8 words, then unmasked error checking signal would be masked if the UC4L mask bit were reset so that no error signal would be generated for a command field equal to 4. Additionally, if it were desired to remove the length error checking function from the system the L mask bit would be reset.

FIG. 7 depicts a COMMAND/HANDSHAKE hard-wired error checking matrix. Note from FIGS. 6 and 7 that if the protocol error mask bit (P) is reset then both the CMD/LENGTH and CMD/HANDSHAKE error checking functions are masked. Thus, the error tree includes a masking gate for masking the unmasked error checking signals generated by both hard-wired decoders. Further, from FIG. 7, if any of the handshake signals 1-6 are later defined, the unmasked error checking signal can be masked by a respective one of the masking bits UHS1-UHS6. Additionally, the handshake error checker matrix can be masked by resetting the HS masking bit.

Referring back to FIG. 1, in the preferred embodiment the error checking matrices are redundantly included on each module and the error checking signals are received and processed by the MDC 16. This redundancy provides for fault-tolerant operation in the event of the failure of a particular error checking matrix. Additionally, electrical problems with the bus can be detected if the results of checking on the different modules are inconsistent.

The invention has now been described in detail with reference to the preferred embodiment. Alternatives and substitution will be apparent to persons of ordinary skill in the art. For example, although the invention has been defined with reference to a shared bus communication system, it is equally applicable to digital communication system utilizing other communication channels such as telephone line, optical fiber, microwave, or radio-frequency links. Additionally, the checking matrices in the preferred embodiment are implemented in gate arrays, but any suitable storage medium such as RAM, ROM, or general purpose registers can be utilized. The intersection of two fields has been described but error checking based on more than two fields can also be implemented. Accordingly, it is not intended to limit the invention except as provided in the claims.

## Claims

1. In a system having a plurality of modules coupled by a communication channel and having a communication protocol utilizing first and second data fields, said first data field encoding one of a plurality of M values, M being an integer and said second data field encoding one of a plurality of N values, N being an integer, with said first and second data fields transmitted in succession on the channel to define and control communication operations, a method for checking for protocol errors comprising the steps of: N.times.M storage locations for each one of a set of the M.times.N possible pairs to said first and second data field values where said group of storage locations is divided into M first data field sets of storage locations, each first data field set including N storage locations with each storage location included in only one first data field set, with each written error checking signal having either a first check value indicating that the possible pair is allowed by the communication protocol or having a second check value indicating that the possible pair is forbidden by the communication protocol; said channel during a particular communication operation; data field sets; of the N storage locations in the unique first data field set selected by said received first data field to provide a selected error checking signal selected only by said first and second received data fields; and checking signal indicates that the received first and second data fields are not allowed by the communication protocol.

2. The method of claim 1 further comprising the step of:

3. In a digital system including multiple modules coupled by a communication channel and that performs operations specified by first and second data fields transmitted on the channel to govern inter-module communication and operations, an error checking system, responsive to selected data fields, for indicating whether operations specified by the selected fields are allowed according to a particular hardware configuration and communication protocol, said error checking system comprising; receiving first and second fields respectively and an output for transmitting an unmasked error checking signal selected by said first and second fields received at said inputs, with said error checking signal having either a first check value if the first and second fields are not allowed by the particular hardware configuration and communication protocol or a second check value if the first and second data fields are allowed; and column inputs of said matrix decoder to select an unmasked error checking signal; bits, each bit programmably set to either a masking state or non-masking state; and to said row mask register to receive the unmasked error checking value, and a row configuration bit selected by said first data field received at the row input of said matrix decoder, for providing an unmasked error signal having said second check value regardless of the value of said unmasked error signal output by said matrix decoder if the row configuration bit selected is set to the masking state and for providing an unmasked error signal having a value equal to the check value of said unmasked error signal output by said matrix if the row configuration bit selected is set to the unmasking state so that a pair of first and second fields previously forbidden can be allowed by reprogramming a row configuration bit.

4. The error checking system of claim 3 wherein said first matrix decoder comprises: signal for any pair of first and second data fields having a first data field included in a plurality of selected first data fields and a second data field included in a plurality of selected second data fields.

5. The error checking system of claim 3 further comprising: first-data field and a third data field respectively and an output for transmitting an unmasked error checking signal selected by said first and third fields received at said inputs, with said error checking signal having either said first check value if the first and third fields are not allowed by the particular hardware configuration and communication protocol said second check value if said first and third data fields are allowed; and further comprising: register for providing an error signal having said first value regardless of the value of an unmasked error signal selected by the first and third data fields if the row configuration bit selected by the first data field is in the masked state.

6. The error checking system of claim 3 wherein: different first data fields to reduce the size and complexity of said matrix decoder.

7. The error checking system of claim 6 wherein: row configuration bit selected by each first data field included in said set of different first data fields to reduce the size and complexity of said row mask register.