WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Multiple block binary synchronous duplex communications system and its method of operation    
United States Patent3979719   
Link to this pagehttp://www.wikipatents.com/3979719.html
Inventor(s)Tooley; John R. (Austin, TX); Scott; Larry D. (Austin, TX); Chalkley; Hatcher E. (Austin, TX)
AbstractA multiple block binary synchronous duplex communications system provides for the orderly transfer of data from one location to another utilizing communications facilities. This communications system increases the efficiency of data links with long propagation delays or with long processing times at either end by maintaining a continuous flow of data and responses in both directions. The memory of the communications link is kept full at all times. Data is transmitted in blocks including an identification code. The received data is checked for errors. When errors occur the transmission of data is not stopped; data is continuously transmitted and signals are returned including the block identification of the block containing the error. The block containing the error is then retransmitted when the transmitting station of the communications system is available for this task.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 3979719
Multiple block binary synchronous duplex communications system and its

     method of operation - US Patent 3979719 Drawing
Multiple block binary synchronous duplex communications system and its method of operation
Inventor     Tooley; John R. (Austin, TX); Scott; Larry D. (Austin, TX); Chalkley; Hatcher E. (Austin, TX)
Owner/Assignee     Texas Instruments Incorporated (Dallas, TX)
Patent assignment
All assignments
Publication Date     September 7, 1976
Application Number     05/554,817
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     March 3, 1975
US Classification     714/748 370/276
Int'l Classification     G08C 025/00
Examiner     Atkinson; Charles E.
Assistant Examiner    
Attorney/Law Firm     Hal, Heiting; Leo N. Levine; Grossman; Rene' E. ,
Address
Parent Case     This is a continuation, of application Ser. No. 347,252, filed April 2, 1973 and now abandoned.
Priority Data    
USPTO Field of Search     340/146.1 BA
Patent Tags     multiple block binary synchronous duplex communications its operation
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
3456239



[0 after 0 votes]
3473150



[0 after 0 votes]
3605091
Morrill
335/210
Jan,1975

[0 after 0 votes]
3676846
Busch
714/749
Jul,1972

[0 after 0 votes]
3671945
Anthony F. Maggio, Jr. (Oklahoma City, OK)
714/748
Jun,1972

[0 after 0 votes]
3646518
Weinstein
714/751
Feb,1972

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. In a communications system in which a first and a second station, each having a transmitter and receiver portion, simultaneously transmits and receives blocks of data, a method of controlling the stations including the steps of:

a. continuously transmitting blocks of data including a respective identification code for each block of data from each station to the other station;

b. checking the received blocks of data at the receiving portion of each station to determine if the received blocks of data contain errors;

c. acknowledging receipt of those blocks determined to be correctly received;

d. storing at each station the identification codes of those blocks of received data which contain an error;

e. transmitting the identification code of the blocks of received data which contain errors from the receiving portion of each station to the transmitting portion of the other station when the transmitting portion of the other station becomes available without interrupting the flow of blocks of data in either direction; and

f. retransmitting from each of the transmitting portion to each of the opposite receiving portions only those blocks of data which contained errors as indicated by the identification codes received from the receiving portions.

2. The method of claim 1 wherein the step of checking the received blocks of data further comprises:

b.

i. generating a cyclic redundancy code at the transmitting portion of each station;

ii. generating a cyclic redundance code at the receiving portion of each station; and

iii. comparing the transmitting portion code of each station with the receiving portion code of the other station respectively.

3. A communications system for transmitting blocks of data having first and second stations, each of the stations including both transmitter and receiver portions, for the simultaneous transmission of blocks of data from the first station to the second station and from the second station to the first station, each of the stations comprising:

a. means in the transmitter portion for continuously transmitting blocks of data including a respective identification code for each block of data to the receiver portion of the other station;

b. means in the receiver portion for checking the received blocks of data for error;

c. means in the receiver portion for acknowledging receipt of the blocks of data determined to be correctly received;

d. means in the receiver portion for storing the identification codes of those blocks of received data which contain an error;

e. means in the transmitter portion for transmitting the identification code of the blocks of received data which contain errors to the other station when the receiver portion of the other station becomes available without interrupting the flow of blocks of data in either direction; and

f. means in the transmitter portion responsive to the identification codes of blocks of data containing errors as received from the other station for retransmitting to the other station only those blocks of data which contain errors.

4. The system of claim 3 further comprising means in the transmitter portion for dividing the numeric binary value of each data block by a constant and for transmitting a code representative of the remainder of such division to the receiver portion.

5. The system of claim 4 wherein the means for checking the received data further comprise means for comparing the remainder of the division with a remainder provided by the transmitter portion for the same block of data.
 Description Submit all comments and votes
 


This invention relates to data communications systems and more particularly to data communications systems for synchronously transmitting multiple blocks of binary data in both directions simultaneously.

Various systems for transmitting multiple blocks have been utilized in the art. In these systems a fixed number of blocks is transmitted before a response is transmitted. In some systems, for example, protocol allows for two or three blocks to be transmitted before a response must be received. In still further systems, multiple blocks are transmitted before a response. However, in these systems, when an error is encountered in a block, this block and all subsequent blocks transmitted after the last response must be retransmitted whether in error or not.

It is an object of the present invention to provide a communications system with increased efficiency of data links with long propagation delays. It is another object of the invention to provide a communications system which increases the efficiency of data links with long processing times at either the transmitting or receiving stations. A further object of the invention is to provide a multiple block binary synchronous duplex communications protocol system in which a received error in a block of data does not require the retransmission of blocks other than the block containing the error.

In accordance with the present invention, a continuous flow of data and responses is maintained in both directions and the memory of the communications link is kept full. The multiple block binary synchronous duplex communications protocol system allows as many blocks to be transmitted as there are buffers in the transmission system. A feature of the invention is that it allows any number of blocks to be transmitted before a response while requiring retransmission of only erroneous data blocks. This is accomplished by utilizing block identification codes which are transmitted immediately preceding each block. Each block of data transmitted is error checked at the receiving station by use of vertical or cyclic redundancy checking. If the redundancy check does not prove correct, the receiving station will transmit a control message which will cause the transmitting station to transmit only the identified data block containing the error as the transmitting station becomes available for this task.

Further objects and advantages of the invention will be apparent from the detailed description and claims and from the features illustrated in the drawings wherein:

FIG. 1 is a block diagram of the multiple block binary synchronous duplex communications system according to the present invention;

FIG. 2 is a block diagram of each of the transmitter/receiver stations 10 and 11;

FIG. 3 is a block diagram of the computer which may be utilized in the transmitter/receiver stations 10 and 11;

FIG. 4 is a block diagram of the transmit/receive unit which is utilized in the transmitter/receiver stations 10 and 11;

FIGS. 5 and 6 are detailed block diagrams of the data concentrator and computer interface unit 20 within the transmit/receive unit 15;

FIG. 7 is a block diagram of the transmitter portion of the transmitter/receiver 21 within the transmit/receive unit 15;

FIGS. 8A and 8B are a block diagram of the receiver portion of the transmitter/receiver 21 comprising the transmit/receive unit 15;

FIG. 9A is a block diagram of a logic circuit utilized in the transmitter to perform cyclic redundancy checking;

FIG. 9B is a block diagram of a logic circuit utilized in the receiver portion of the transmitter/receiver to perform the cyclic redundancy check;

FIG. 10 is a block diagram of the control software 13 utilized to simulate a hardware controller for the transmitter/receiver station in conjunction with the computer 12;

FIG. 11 is a block diagram illustrating the BMI active queue;

FIG. 12 is a block diagram illustrating an example of the BMI queue and transmit chain;

FIG. 13 is a block diagram illustrating the queue linkage prior to halt servicing; and

FIG. 14 is a block diagram illustrating queue linkage after halt servicing is complete.

Referring now to FIG. 1, the multiple block binary synchronous duplex communications protocol system of the present invention utilizes binary synchronous duplex communications procedure providing for synchronous transmission of binary coded data over full duplex lines 22. Two transmitter/receiver stations 10 and 11 are provided. The binary synchronous duplex communications system expands the transmission capabilities of present and future teleprocessing facilities through its abilities to support both half-duplex and full-duplex transmissions using a variety of codes. A transparency feature allows transmission of control characters in various forms of raw data within the normal message format without any associated control or graphic significance. The binary synchronous duplex system is also capable of accomodating a broad range of medium and high speed synchronous equipment.

The binary data in the binary synchronous duplex communications system is transmitted as a serial stream of binary digits. Synchronous communications in accordance with the present invention means that the active receiving station on a communications channel is operated in step with the transmitting station through the recognition of the specific bit pattern called the sync pattern at the beginning of each transmission.

The data link 22 consists of the communications lines, modems, and other communications equipment used in the full-duplex transmission of information between the two stations 10 and 11. Full-duplex communications permits simultaneous data transmissions from both stations 10 and 11. The communications facilities 22 may be, for example, lines provided by communications common carriers. The specific data set equipment used at each channel termination point or station is determined by the type of communications channel and the operational speed of the terminal equipment located at each station. The binary synchronous duplex system is intended, for example, for use on high quality voice grade channels and wide-band channels.

All transmissions are sent over the line as a sequence of binary-coded signals. Control of the data link 22 is accomplished by the transmission and recognition of special line-control characters. These control characters are known as data link control characters.

The major function of the binary synchronous duplex system is to effect the orderly transfer of data from one location to another using communications facilities.

The binary synchronous duplex system accomodates, for example, two specific transmission code sets. Each of these code sets consists of graphic characters (numeric, alphabetic, and special), functional characters (e.g., HT-horizontal tab., DEL-delete ), and data-link control characters (e.g., STX-start of text). Each code provides different capacities for total graphic and functional assignments. These capacities reflect the flexibility of the two codes EBCDIC (extended binary-coded decimal interchange code) and USASCII (United States of America standard code for information interchange). When either of these code sets is used with transparent mode, the flexibility of the telecommunications system is further increased since all possible bit configurations are treated as (data only) within transparent text. For this mode of operation, all assignment restrictions are removed from the code set being utilized. Thus, a parity bit is also available as a data bit when transmitting transparent USASCII coded data. This additional capability of binary synchronous duplex system means that within the standard message format any type of coded information can be handled using transparent-text mode. The system may also be adapted to handle additional sets of codes.

In accordance with the present invention, the multiple block synchronous duplex communications system is provided in which duplex data transmission is implemented with maximum efficiency. This is accomplished mainly in that error handling is optimized to effect nonstop transmission of data and nonduplication of valid data in the event of an error. The system may be implemented as a hardware embodiment or as a hardware/software embodiment.

Referring to FIG. 2, a combination hardware/software embodiment of the transmitter/receiver stations 10 and 11 is shown. In the systems according to this embodiment of the invention, each of the stations 10 and 11 is comprised of a data processing system or computer 12 including either hardwired or stored program software 13, a memory port 14, a transmit/receive unit 15, line interface and/or modem 16 and the data link 22 to the other similar station 10 or 11. Each station 10 and 11 is capable of transmitting and receiving control code sequences and data as henceforth will be described in detail.

Referring to FIG. 3, the computer 12 is a general purpose computer such as the 980A manufactured and sold by Texas Instruments Incorporated and is comprised of a central processor unit 17, and a memory unit 18. A direct address subsystem 19 built into the computer provides direct memory addressing via memory port 14 thereby allowing data to be stored under control of the transmit/receive unit 15. The computer 12 also includes hardwired or stored program control software which in the present embodiment controls to a major extent the operation of the communications system to effect the optimized error handling set forth above.

The communications system in accordance with the present invention may be implemented in existing commercially available systems such as the IBM 2701 or the communications system manufactured by Bolt, Berenek and Newman of Boston, Mass. by the addition of appropriate software which will later be discussed in detail. The system may also be implemented in accordance with the illustrated embodiment as set forth herein.

Referring now to FIG. 4, the transmit/receive unit 13 is comprised of a data concentrator computer interface unit 20 and transmitter/receiver 21. The computer interface unit 20 is coupled to the computer memory port 14 and the transmitter receiver is coupled to the line interface and/or modem 16.

The data concentrator and computer interface unit 20 matches the characteristics of the computer 12 to the characteristics of the transmitter/receiver 21. The data concentrator and computer interface unit 20 receives, acknowledges and stores in the computer memory unit each status word which comes from the transmitter/receiver 21. The unit 20 also receives, recognizes and acts upon commands from the computer 12. Each command is given, for example, in 16 bit words which instruct the unit 20 to perform one or more tasks such as: transferring a block of data from the transmitter/receiver 21 to the memory unit 18 by loading each word via memory port 14, acknowledging each word loaded, and storing the word in a specified location in the memory unit 18; transferring control words from the computer 12 to the transmitter/receiver 21 by fetching each word from memory unit 18, loading it and determining that the transmitter/receiver has acknowledged receipt of each word. The unit 20 is a half-duplex channel since it may either fetch a word from memory unit 18 or store a word in memory unit 18, but does not do both simultaneously. However, the unit 20 has the appearance of being a full-duplex channel because of its high speed of operation.

The operations of the data concentrator and computer interface unit are, with the exception of status interrupts and error condition interrupts, controlled by the computer control software 13 in the present embodiment. The unit 20 is a dual stored-program processor. Two chains of data concentrator and computer interface data/control transfer instructions are stored in the memory unit 18 by the control software 13, one for transmit transfers and one for receive transfers. A computer to data concentrator and control interface unit command, designated an ATI command, initiates the unit 20 with the memory unit 18 starting addresses of an instruction chain. The unit 20 then executes the instruction chain with no required further intervention of the central processor unit 17 of computer 12. In the event that the control software 13 has only a single hardware command word or status address word for the unit 20, the stored-program mode is unnecessary; a single word is transferred as the second of two words which constitutes an ATI command. Similarly, the second ATI command word may be used to convey a computer to transmitter/receiver or control word transmitted from the unit 20 to the transmitter/receiver 21. In the stored program mode, the second ATI command word is the memory starting address of the stored program.

The data concentrator and computer interface unit 20 is shown in greater detail in FIGS. 5 and 6. The systems of FIGS. 5 and 6 are implemented in hardware logic and controlled in accordance with the control software 13 residing in computer 12 as henceforth will be described in detail. Referring then to FIG. 5, a command controller 22 provides the store status or store registers to interrupt controller 23 through which the store status is transmitted to store controller 25. The interrupt controller 23 receives interrupt signals from the command controller 22, the logic function 24, the receive controller 26, and the receive DMA controller 29 and the transmit DMA controller 32 for segment complete. The interrupt controller 23 requests interrupts of the computer 12 and receives signals from the computer 12 when the interrupt is recognized. The store controller 25 controls the storing of data and transmits a store signal to the computer 12. The store controller also accepts "store receive data signals" from receive block transfer controller 28. The general logic function 24 transmits "request access signals" and receives "access granted" and parity error signals which are gated in the gate function 24 to request an interrupt of the interrupt controller 23. The receive DMA controller 29 requests interrupts of the interrupt controller 23 when segments are complete. The receive DMA controller 29 also sends "receive a data block" signals to receive block transfer controller 28 and fetch list signals to the fetch controller for the fetch controller to control a fetch from memory unit 18. The receive DMA controller 29 also sends "packed/unpacked mode control" to the data packer controller 27. The data packer controller 27 receives BSCTR queue signals from the transmitter/receiver 21 and BSCTR status interrupt signals from the transmitter/receiver 21. When the interrupt is accepted by data packer controller 27 an accept signal is returned to the transmitter/receiver 21. The received words packed or unpacked as controlled by receive DMA controller 29 are transmitted to receive controller 26 which requests a receive status interrupt of interrupt controller 23 and transmits received data to receive block transfer controller 28. The fetch controller 30 receives fetch list signals from both receive DMA controller 29 and transmit DMA controller 32. It also receives "fetch data signals" from transmit block transfer controller 31 and in response controls fetching of the lists or data from memory unit 18. The transmit DMA controller 32 requests interrupts of interrupt controller 23 when segments are complete. The transmit DMA controller 32 also signals the transmit controller 33 to transmit a list of data or control words. The transmit controller 33 transfers transmit words by data unpacker controller 34. The transmit DMA controller 32 also controls the packed/unpacked mode control of data packer controller 34. The data packer controller 34 sends queue signals and control signals to the transmit portion of the transmitter/receiver 21 and the transmitter/receiver 21 responds with an accept signal to the data unpacker controller 34. The transmit controller 33 also signals the transmit block transfer controller to transmit data words in response to which the transmit block transfer controller 31 requests "fetch data" from fetch controller 30.

Referring to FIG. 6, data read from memory is transmitted to the transmit register 35 and from the transmit register 35 to the number register 36, the receive R count register 38, the receive R start register 39, the transmit T count register 37, the transmit T start register 40, the receive address register input selector 42, the transmit T address register input selector 44, parity checker 51, or transmit buffer 52. The data received by the transmit buffer 52 is transferred to the data unpacker 53 and then to the function loop test 54. After the function loop test has been performed on the data, it is transmitted from the function loop test 54. The receive R address register input selector 42 also receives data from the R start register 39 and the transmit T address register input selector receives signals from the transmit T start register 40. The receive address register input selector 42 then feeds an address to the receive R address register 47 and the transmit T address register input selector 44 transmits addresses to the transmit T address register 48. The address in register 47 or 48 is then transmitted to memory address selector 49, or respectively chained by the receive chain register 41 loop to the receive R address register input selector 42 or the transmit T chain register 45 loop to the transmit T address register input selector 44. The status register 43 receives data from the transmit register 35 which is summed with the status count register 55 in adder 46 which is utilized by memory address selector 49 to select an address in accordance with the contents of the status register 43 and the status count register 55. An address selected by the memory address selector 49 is gated by address gating function 50 to provide a memory address to address the memory unit 18.

Received data is transmitted to the function loop test unit 54 and then to receiver buffer 55. First character latch 56 is set upon receipt of the first character and a signal is transmitted to receive buffer indicative thereof. The data is then transferred to the receive register. From the receive register the data is transferred to the memory write data selector and to the second and third status registers 59 and 60, respectively. The first status register 58 and the second and third status registers 59 and 60 transmit the receive status to memory write data multiplexer 61. The memory write data multiplexer 61 also receives the contents of the receive R address register 47, the receive R count register 38, the receive R start register 39, the receive R chain register 41, the transmit T address register 48, the transmit T count register 37, the transmit T start register 40, the transmit T chain register 45, the number register, the transmit register 35, the transmit buffer 52, the receive register 57, and the receive buffer 55. In accordance with these signals, the memory write data multiplexer 61 signals memory write data selector 62 to transfer the data from receive register 57 via data gating function 64 to write the data in memory unit 18. In addition, parity generator 63 generates a parity signal which is also transmitted to memory unit 18.

The transmitter function of transmitter/receiver 21 may be of the type shown in FIG. 7. Referring to FIG. 7, a transmit clock 72 is provided which feeds clock pulses to transmit synchronizer 73. The transmit synchronizer 73 synchronizes the transmit clock pulses from clock 72 and the modem transmit clock from the modem interface unit to the binary synchronous transmitter gate and register function 70 and counter composite 77.

The gate and register function 70 receives user data, user queue and user command words along with the synchronized clock and a bit count, time-out and sync count from the counter composite logic 77. Data is transmitted to the modem interface unit from the data register function 75. This data is transmitted from the gate and register function 70 to the data register function 75. The gate and register function also provides data register clock, parallel mode, SEL DLE, SEL SYN, SEL DATA, SEL S/R and CRC mode signals to the data register function 75. The gate and register function 70 also provides SOH, STX, ENQ, ETB, ETX, ITB, STICK, NAK, time-out and fill, stop on DLE and DLE signals to the transmitter state control function 74. When all states are present, the transmitter state controller function 74 returns a signal to the gate and register function 70. The gate and register function 70 also provides increment sync count, reset time-out and reset sync count signals to the counter composite function 77.

The data which is transmitted via data register function 75 is cycled to the transmit error function 76 to perform a cyclic redundancy check (CRC) when a CRC mode signal is present. The transmit error function 76 is described in further detail with respect to FIG. 9A. A transmitter command word function 71 also receives the user data and user command word and provides a stop on DLE signal to the gate and register function 70. The transmitter command word function 71 also provides text modem and send request signals to the modem interface unit 16. The transmitter command word function 71 also sends receiver clear, receiver start, unrecognized character, enable parity alarm, send status, stop receiver and pass SOH/STX signals to the receiver portion of the transmitter/receiver 21.

The receiver portion of the transmitter/receiver 21 may be of the type illustrated in FIGS. 8A and 8B. Referring to FIGS. 8A and 8B, the receiver is comprised of a binary synchronous receiver data register function 83 which receives data from the modem 16 and transfers buffered data to logic unit 82. The data is also circulated to the error function logic circuit 84 which provides the cyclic redundancy check on the received blocks of data. The error function logic 84 is described in further detail with respect to FIG. 9B. If there is an error this is indicated to the logic unit 82 by a "set error" condition signal. The receiver also includes a state controller function 81 which provides a plurality of logic states in accordance with control characters transmitted to the data register function 83 and from the data register function 83 to the state controller function 81. The logic states provided by the state controller function and the control characters are then applied to the gate and register function 80. The receiver also includes a clock function 78, a synchronizer function 79 and a counter composite function 85 providing functions similar to those of the corresponding unit in the transmitter portion of the transmitter/receiver.

The data link is designed to operate point-to-point (two stations). For point-to-point full-duplex operation, both stations (10 and 11 of FIG. 1) can use the communications lines 22 simultaneously. The operation of the system is as follows.

A transmission is comprised of one or more blocks of data. Its major subdivisions are called text blocks. Text blocks may in turn be subdivided into transmission blocks. A transmission block is divided into text blocks to facilitate data handling and buffer management in the transmitting and receiving stations. The text blocks may be further divided into transmission blocks to permit more efficient error control and higher data through-put rates than the text blocks provide. Data blocks are identified by a DLE STX (start of text) control character sequence immediately preceding each block. Each transmission block except the last is immediately followed by a DLE ETB (end of transmission block) control character sequence. The last transmission block of a text block is immediately followed by a DLE ETX (end of text) control character sequence. A maximum text block link is specified for each data link based on buffer memory considerations at both the transmitting and receiving stations.

Each block of data transmitted and the ACK (accepted, continue sending), NAK (data not accepted, e.g., a transmission error was detected) and RSP (retransmit) sequences are error-checked at the receiving station by the use of cyclic redundance checking which checks the block after it is received. After each block, the receiving station will reply with an ACK control message if the cyclic redundancy checking is correct. If the cyclic redundancy checking is not correct, the receiving station transmits a NAK control message, which will cause the transmitting station to retransmit the data block. Retransmission of a data block following an initial NAK control message is attempted, for example, 3 times. The transmitting station receives no response message if the response message has a cyclic redundancy checking error, the transmitting station can request a retransmission of the response message by sending an RSP control message.

Cyclic redundancy checking is a method for error checking of blocks of data. The checking is a division performed by both the transmitting and receiving stations. The transmitter logic is illustrated in FIG. 9A and the Receiver logic is illustrated in FIG. 9B. The logic in both cases is implemented by shift registers and adders. In addition the Receiver logic includes an AND gate 102 to provide an error signal. Using the numeric binary value of the message as a dividend, division is performed using a constant divisor. The quotient is discarded and the remainder serves as the block check code BCC which is transmitted immediately following a checkpoint control sequence (DLE ITB, DLE ETB, or DLE ETX). The receiving station compares the transmitted remainder to its own computed remainder, and if they are equal, finds no error. The BCC accumulation is reset upon entering the text mode by the first DLE STX sequence or DLE SRP start of response sequence received when in the idle mode. The BCC accumulation comprises two bytes when it is transmitted on the line, but functionally is considered as a single sequence.

TABLE I ______________________________________ MBSD CONTROL CHARACTER CODES CONTROL HEX CHARACTER CODE ______________________________________ DLE STX 10 02 DLE ETX 10 83 DLE ITB 10 IF DLE ETB 10 97 DLE SRP 10 08 ACK 86 NAK 15 RSP 85 SYN 16 ______________________________________

An example of the hexadecimal code for the control characters of the multiple block binary synchronous duplex communications protocol system is shown in Table I. The division constant used in the binary synchronous duplex system is 2.sup.16 + 2.sup.15 + 2.sup.2 + 1. If the receiver finds that its communicated remainder is not equal to the transmitted remainder, it requests a retransmission of the block by replying with NAK control message or an RSP message. It continues retransmission until on some trial it obtains equality between the two remainders. The receiver then replys with a positive acknowledgement. If the number of retransmissions exceeds a preset maximum, three for example, an equipment failure is indicated.

The error control procedures utilized in accordance with the binary synchronous duplex system according to the present invention reduces the probability of accepting a block of data or response message with one or more transmission errors. Undetected block error probability and through-put rate can be optimized for different line error rates by adjusting the data block link. Each station adjusts its transmission link by utilizing DLE ITB or DLE ETB in order to optimize data link performance. An examination of the control character codes given in a Table I shows that two or more errors are required to transform one control character into another. A single error results in a garbled and, hence, detectable error pattern. The probability of an undetected control character error is approximately 4 times P.sub.O 2, where P.sub.O equals the line error probability. The ACK, NAK and RSP control messages are sent utilizing a cyclic redundancy check and as such do not have the above problem.

Control of the data link is maintained through the use of the following control sequences and control messages: SYN (synchronous idle), DLE STX (start of text), DLE ITB (end of intermediate transmission block), DLE ETB (end of transmission block), DLE ETX (end of text), ACK (affirmative acknowledgement), NAK (message negative acknowledgement), RSP (message retransmit) ACK, NAK or RSP message, DLE SRP (start of response message) and DLE (data link escape).

The SYN synchronous idle is used to establish and maintain synchronization. Two contiguous SYN's at the start of each transmission are referred to as the character-phase sync pattern. During idle periods the all one's pad characters are transmitted rather than SYN. The DLE STX start of text character sequence precedes a block of text data. When in the idle mode, receipt of DLE STX initiates the text mode. The DLE ETB end of transmission block character sequence indicates the end of a block of text data started with DLE STX and causes a change to the idle mode. The blocking structure is not necessarily related to the processing format. The block check character is sent immediately following DLE ETB. DLE ETB requires an ACK or NAK response message from the receiving station. The DLE ITB end of intermediate transmission block character sequence is utilized to divide a text block for error checking purposes without requiring a reply. The block check character immediately follows the DLE ITB and resets the cyclic redundancy check accumulation. After each intermediate text bock, successive blocks begin with DLE STX.

Normal receiver reply occurs after the last intermediate block, which is terminated by DLE ETX or DLE ETB. One of these ending sequences is received, the receiving station responds to the entire set of intermediate blocks. If a cyclic redundancy check error is detected for any of the intermediate blocks, a NAK negative response is sent, which requires retransmission of all intermediate blocks. The DLE ETX end of text character sequence terminates a text block started with DLE STX or an ACK, NAK, or RSP message started with DLE SRP. The BCC is sent immediately following DLE ETX. DLE ETX requires a response message from the receiving station. This character sequence causes a change from text mode to idle mode following the BCC. An example of a one-way transmission of the multiple block binary synchrouous duplex protocol system in accordance with the present invention is given in Table II and III below.

Text block organization is described in Table IV. All text blocks begin with DLE STX. The next 16 bits is designated the sequence number. This number starts at zero ascending to FFFF.sub.16. After the block sequence number FFFF.sub.16, it is reset to zero. Text blocks end with the DLE ETX followed immediately by the two byte BCC. Transmission blocks within a text block end with DLE ETB. Intermediate transmission blocks end with the DLE ITB. DLE ETB and DLE ITB. DLE ETB and DLE ITB are immediately followed by the two byte BCC.

Table V shows the response message format. Response messages are utilized as status replys to transmission blocks (ACK, NAK) and to request retransmissions of ACK, NAK messages (RSP). All response messages begin with the DLE SRP character sequence. The next sixteen bits is the sequence number of the data block to which this response applies followed by the response character (ACK, NAK, RSP). Following the control sequence is the DLE ETX sequence followed by the BCC. ##SPC1## ##SPC2## An example of an ACK message sequence is given in Table VI, an example of a NAK message is given in Table VII and an example of an RSP message sequence is given in Table VIII.

The DLE SYN control code sequence is used to verify sync or as a time-fill sequence within a transmission block. A DLE ENQ control code sequence is used to abort a transmission block. A DLE DLE control code sequence is used to permit transmission of DLE as data when the bit pattern equivalent to DLE appears within a transmission block. The first DLE is disregarded and the other is treated as data. A DLE ITB control code sequence indicates the end of an intermediate block and a DLE SRP control sequence indicates the start of a response. The DLE STX following an intermediate block may be preceded by SYN SYN. The SYN SYN control code sequence is not included in the BCC.

Transparent data and responses are received on a character-by-character basis such that character phase is maintained.

Control character inclusion in the BCC is as follows: DLE is included if it is preceded by DLE. The first DLE which was inserted by the transmitting station is not included. Both characters of a DLE STX sequence following an ITB are included. DLE is not included except for the preceding two conditions. STX and SRP are not included except for the second condition for STX. ETB, ITB and ETX are always included. SYN is included only if it is within a response or text block and not preceded by DLE. Sequence numbers are included in the BCC. SYN characters sent outside the text or response blocks do not require a preceding DLE.

In accordance with the present invention, effective use of long-delay, full-duplex data links, through the multiple block binary synchronous duplex procedures, requires the proper use of the data link control sequences. ##SPC3## Effective communications are obtained by transmitting multiple data blocks in both directions before waiting for responses and by interleaving data blocks and response messages. Time-outs are defined to prevent indefinite delays due to formating errors or hardware malfunctions. The multiple block binary synchronous duplex communications system also provides synchronization formats because of the bit serial nature of common carrier transmissions. Long-delay data links are defined as those which have long delays between the time data is transmitted and the time response for the data is received. Several things can cause this delay, including long propagation times such as satellite transmissions and long processing delays at the receiving station. The system according to the present invention overcomes these problems by transmitting enough data to fill the entire memory of the data link where "memory" is defined as the amount of data which can be transmitted in the round-trip delay time. The round-trip delay time is equal to the round-trip propagation time plus processing time at the receiving station needed to return a response.

To begin a transmission, the transmitter begins transmitting when it has data to send. No line bid sequence is necessary as it is assumed that the receiving station is always ready to receive. Time-outs and response messages will eventually bring the two stations in sync should the receiver not be ready to receive. Idle periods are periodically filled with data blocks having zero data bits as will hence forth be described in detail.

Under the above procedure, the transmitter may transmit as much data as it has buffer without receiving a response. To make maximum usage of the data link, this amount of buffer should be equal to or greater than the memory of the data link. This may necessitate having more buffer in the receiving station depending on how buffers are managed because of short data blocks. As a receiving station receives each data block, the BCC and sequence number are checked. If the BCC matches and the sequence number is one greater than the last received (except after reset) the receiver transmits an ACK response message with the same block sequence number. If the BCC is incorrect, the receiver transmits a NAK response message with expected block sequence number and increments the last received sequence number. If the BCC is correct, but the sequence number is different than expected, the receiving station has three alternatives. If the sequence number is behind the expected sequence number and it is an expected retransmission, the receiver transmits an ACK message with the retransmitted block sequence number and does not increment the last received block sequence number. If the block sequence number is higher than that expected, but lower than some arbitrary number, the receiver assumes that all blocks in between were lost and sends a NAK message for each and sends an ACK message for this data block updating the last received block sequence number to the received block sequence number. If the sequence number is higher than expected by more than the arbitrary number or is lower and not a retransmission it is assumed that the sequence number is in error and the block is discarded. When the transmitter receives a correct ACK message, it assumes that the data block with the matching block sequence number was received correctly and that the buffer can be used for other blocks. When a NAK message is received, the transmitting station must retransmit the data block.

If a reply to a data block is in error (wrong sequence number, incorrect BCC, or never received such as a receive time-out), the transmitter replys with an RSP message to obtain a retransmission of the expected response message or messages. If the BCC is incorrect, the transmitter transmits an RSP message for the expected response using the expected sequence number and increments the expected number. An example of a correct BCC and sequence number is given in Table IX. If the BCC is correct, but the sequence number is different than expected the transmitter has three alternatives. If the sequence number is behind that expected, and this is an expected retransmitted response, the transmitter accepts it for that block. If it is not an expected transmitted response and it is behind the expected sequence number and is not an RSP, it is ignored. If the sequence number is more than some arbitrary number above the expected sequence number (expectance window) an RSP is sent for the sequence number. If it is within the expectance window, RSP messages are sent for intervening responses and the time-outs are restored. Receive time-outs cause recovery for missed responses.

RSP messages are different in that the sequence comparison is done on the sequence number of the last received data block. For sequence numbers lower