Fast turnaround protocol for use with a high speed half duplex modem

Abstract: A modem with improved signal processing and handshaking capabilities as described. Two digital signal processors are used to perform indpendent, concurrent operations so that a faster execution rate is obtained and more precise calculations are made possible. The modem also uses an improved handshaking technique which allows the modem to maintain compatibility with existing 1200 and 2400 bps modems while allowing for negotiation for 4800 and 9600 bps communications. The modem also incorporates an improved baud clock recovery circuit which dynamically adjusts the actual sampling point in a manner dependent upon the difference between the actual sampling point and the optimal sampling point. This allows the actual sampling point to converge upon the desired sampling point at a high rate while minimizing jitter around the optimal sampling point.

Description: Technical Field The present invention relates to data communications and transfer and particularly describes a half duplex fast tine turnaround protocol. Background of the Invention The widespread use of computing devices in the home and the office created a need for a means whereby data could be quickly and conveniently transferred from one computing device to another computing device. Modems (modulator-demodulator), in conjunction with the public telephone network, substantially fulfill this need. Modems convert the digital data used by a computing device into an analog signal capable of being transmitted over the public telephone system. Full duplex operation (the ability to send and receive at the same time) is typically preferred. Also, as the amount of data to be transferred from one device to another is increased, higher data rates (in bits per second) are generally desired in order to reduce connection time and telephone charges, especially where long distance communications are involved. However, a typical telephone line has a limited bandwidth, approximately three kiloHertz, and this limited bandwidth, in conjunction with background noise, crosstalk, and transmission line phase and amplitude distortion, places an upper limit on the rate at which data can be successfully transferred over the telephone line. In the United States, communication data rates up to 2400 bits per second (bps) are typically full duplex communications and communication data rates in excess of 2400 bps are typically half duplex communications, i.e., a modem can send or receive but not both at the same time. Some modems can communicate at a data rate of up to 1200 bps, other modems can communicate up to 2400 bps, and some modems can communicate up to 9600 bps. In order for one modem to communicate with another modem, the two modems must agree upon a common data rate. The method by which the two modems agree upon the data rate is commonly called "handshaking". Recommendation V.22 bis of the International Telegraph and Telephone Consultative Committee (CCITT) recommends a handshaking procedure which allows two modems to negotiate whether data will be transferred at 1200 or 2400 bps. However, there is no corresponding recommendation which allows the modems to negotiate whether the data will be transferred at 1200, 2400, 4800 or 9600 bps. Therefore, there is a need for a handshaking procedure which supplements CCITT V.22 bis so as to provide a uniform handshaking method for data transfer rates up to 9600 bps. Full duplex communications are generally available where the data transfer rate is 2400 bps or less. However, where the data transfer rate is in excess of 2400 bps, full duplex communications devices are often expensive and half duplex operation becomes desirable. With half duplex operation, it becomes desirable for a first modem to instruct a second modem that the first modem is through transmitting and is now ready to receive. CCITT recommendation X.25 provides a frame format for the exchange of data and control information. However, the X.25 format provides more information and control bits than are absolutely necessary. Since these bits must be transmitted with each frame then some of the time which could be used to transmit data is wasted transmitting unnecessary or unused control and information bits. Therefore, there is a need for a half duplex format which uses a minimum number of control and information bits, especially for a control frame where a first modem is advising a second modem that it has no data to transfer. Summary of the Invention The present invention provides a high speed line turnaround protocol for use with a modulator-demodulator (modem). The present invention may be characterized as a fast line turnaround protocol for use with high speed modems so that, when the modems are operating in the half duplex mode, a minimum of time is used in turning control of the line over to a first modem when the second modem has no data to transfer. The protocol minimizes the turnaround time so that when one modem has data to transfer there is not a long wait while the other modem is still sending a no data signal. The line turnaround signal comprises a carrier startup sequence, a mark idle signal, five flags, and another mark idle signal. This protocol provides a reliable line turnaround signal and can be sent in approximately 77 milliseconds so that, when a modem has no data to send, the other modem can quickly regain the right to transmit data. The above characteristics and other improvements provided by the present invention will become apparent from a reading of the Detailed Description below. Brief Description of the Drawings Figures 1A and 1B are an illustration of the preferred embodiment of the improved handshaking technique. Figure 2 is an illustration of the phase-amplitude constellation used in the preferred embodiment. Figure 3 is an illustration of the retraining request sequence used in the preferred embodiment. Figure 4 is an illustration of the communications protocol used in the preferred embodiment. Detailed Description Turning now to the drawings, in which like numerals represent like components throughout the several figures, the preferred embodiment of the present invention will be described. Figures 1A and 1B are an illustration of the preferred handshaking sequence. In the preferred embodiment, a calling modem 10 initiates a call to and conducts communications with an answering modem 12 over a standard telephone line 11. Each modem 10, 12 is defined as having a transmitter section (T) which places signals on telephone line 11 and a receiver section (R) which listens for and detects signals on telephone line 11. The transmitter section and receiver section of a modem may operate simultaneously, as in the full duplex mode, or alternately, as in the half duplex mode. The calling modem 10 therefore operates in the full duplex mode for sequences 13A through 13E and 14A through 14E, and operates in the half duplex mode for sequences 30A through 30I. Similarly, the answering modem 12 operates in the full duplex mode for sequences 15A through 15F and 16A through 16D, and operates in the half duplex mode for sequences 31A through 31H. Although the primary purpose of the illustrated handshaking sequence is to determine whether communications should be conducted at 4800 or 9600 bits per second (bps), it is desirable to be able to communicate with modems which can only operate at 300, 1200 and/or 2400 bps. Therefore, the first part of the handshake sequence incorporates part of the CCITT V.22 bis handshake sequence recommendation. The transmitter section (T) of calling modem 10 places the call 13A and then enters a period of silence 13B. The receiver section (R) of calling modem 10 waits 14A while the call is being placed and then listens for the detects the answer tone 14B. The receiver section (R) of the answer modem 12 waits 16A while the transmitter section (T) first has a period of silence 15A, then sends the 2100 Hz answer tone 15B and then enters a short period of silence 15C. At the end of the short period of silence 15C the transmitter section (T) sends 15D the BC1 sequence while the receiver section R listens for and detects the presence of the S1 sequence. In accordance with recommendation V.22 bis sequence BC1 is an unscrambled binary 1 at 1200 bps and sequence S1 is unscrambled double dibits 00 and 11 at 1200 bps. After the receiver section R of calling modem 10 has detected 14C the BC1 sequence from answering modem 12 then the transmitter section T sends 13C the S1 sequence. Also, if calling modem 10 recognizes a silent answer by answering modem 12 then after the silence period 13B, calling modem 10 will send 13C the S1 sequence. Normally, following the V.22 bis recommendation, the next act of the transmitter section T of calling modem 10 would be to send sequence BC2. However, in the preferred embodiment, the transmitter section T sends 13D sequence S2 before sending 13E sequence BC2. Sequence S2 is an unscrambled binary 0 at 1200 bps. Sequence S2 is of a sufficiently short duration so as not to be detected as an interruption or cause problems with handshaking with a conventional 1200 and/or 2400 bps modem. In an alternative embodiment, sequence S2 is the same as sequence S1: unscrambled double dibits 00 and 11 at 1200 bps. CCITT recommendation V.22 bis specifies that sequence S1 shall be 100 +/- 3 milliseconds. In this alternative embodiment sequence S2 is a continuation or prolonging of sequence S1. An answering modem 12 which is not capable of speeds in excess of 2400 bps will not respond to the longer double dibit sequence. However, an answering modem 12 capable of speeds in excess of 2400 bps will recognize the prolonged double dibit sequence as being the S1 sequence and the S2 sequence and respond accordingly. Similarly, answering modem 12 is sending 15E sequence S1 while listening for 16C sequence S2 from the calling modem 10. If answering modem 12 detects 16C the S2 sequence then answering modem 12 responds by sending 15F the S2 sequence. Calling modem 10, after sending 13D the S2 sequence begins sending 13E the BC2 sequence while listening 14E for the S2 sequence from answering modem 12. At this point 22 calling modem 10 and answering modem 12 are ready to enter the half duplex mode and begin the 4800 bps and 9600 bps handshaking sequences. It will be noted that, if at point 20, answering modem 12 has not detected the S1 sequence then, in accordance with V.22 bis answering modem 12 continues with the V.22 bis 1200 bps handshake sequence. Similarly, if the calling modem 10 does not detect 14D the S1 sequence then, at point 21, calling modem 10 will continue with the V.22 bis 1200 bps handshake sequence. If answering modem 12 detects 16B the S1 sequence but does not detect 16C the S2 sequence then, at point 21, answering modem 12 will continue with the V.22 bis 2400 bps handshaking sequence. Likewise, if calling modem 10 has detected 14D the S1 sequence but has not detected 14E the S2 sequence then, at point 22, calling modem 10 will continue with the V.22 bis 2400 bps handshaking sequence. Therefore, the preferred handshaking sequence maintains V.22 bis compatibility for communications with 1200 and 2400 bps modems. It will be noted that the BC2 sequence 13E has been sent by the calling modem 10 so that, in the event the S2 sequence is not returned by the answering modem, the calling modem 10 will already have begun the BC2 sequence required to maintain compatibility with and handshake with a V.22 bis 2400 bps modem. The answering modem 12 also maintains compatibility with V.22 bis modems by sending the S1 and S2 sequences only in response to detection of the S1 and S2 sequences, respectively, being sent by the calling modem 10. Therefore, the use of the S2 sequence allows compatibility with existing V.22 bis modems to be maintained as well as providing a signaling scheme to indicate to a connected modem that higher speed (greater than 2400 bps) operation is available. Assuming now that calling modem 10 and answering modem 12 have indicated to each other that a data rate in excess of 2400 bps is desired and that they are at point 22 preparing to exit from the full duplex mode to the half duplex mode. At first, both modems are silent. The calling modem is silent 30A and then begins sending 30B the first training signal TRN1 while the answering modem 12 listens for and receives the TRN1 training sequence and begins coarse training and adjustment of its equalizer. Training sequence TRN1 is a non-phase encoded scrambled binary 1 at 4800 bps. The non-phase encoded scrambled binary 1 is similar, but not identical, to that defined by CCITT recommendation V.32, Section 5.2.3 and Figure 1. After the completion of training sequence TRN1 calling modem 10 then sends 30C a preferred communication speed rate request RR1. If calling modem 10 prefers communications at 4800 bps then RR1 is a scrambled binary 1 at 4800 bps. However, if calling modem 10 prefers communication at 9600 bps, then RR1 will be a scrambled binary dibit 01 at 4800 bps. When calling modem 10 has finished sending 30C rate request RR1 it ceases transmitting. Answering modem 12, upon detecting the end of transmission of the rate request RR1, begins sending 31C the first training sequence TRN1. Accordingly, calling modem 10 receives 30D the first training sequence TRN1 and begins the coarse training and adjustment of its equalizer. Upon completion of sequence TRN1 answering modem 12 sends 31D rate request RR2. If RR1 requested 4800 bps then RR2 will simply acknowledge the 4800 bps request. However , if RR1 was a request for 9600 bps then RR2 may be a confirmation of the 9600 bps request, in which case communications will be at 9600 bps, or a denial of the 9600 bps request, in which case communications will commence at the 4800 bps rate. Calling modem 10 receives 30E the rate request RR2 from the answering modem 12. If RR1 or RR2, or both, designated 4800 bps, then, at point 33, modems 10 and 12 have completed the handshaking and can commence to communicate at 4800 bps. However, if RR1 and RR2 both request 9600 bps, then, at point 33, modems 10 and 12 will commence the 9600 bps training sequences. After answering modem 12 has ceased sending 31D is rate request RR2 then calling modem 10 begins sending 30F the second training sequence TRN2. Sequence TRN2 is a non-phase encoded binary 1 at 9600 bps. For TRN2 the output of the scrambler is grouped into quadbits and the last dibits of successive quadbits are encoded into the A,B,C and D signal states (Figure 2). While calling modem 10 is sending 30F sequence TRN2 the answering modem 12 is receiving 31E sequence TRN2 and training its equalizer. After calling modem 10 has completed sending sequence TRN2 it then sends 30G sequence BC3. Sequence BC3 is a scrambled binary 1 transmitted at 9600 bps. Answering modem 12 receives 31F sequence BC3 and performs the final adjustment and training of its equalizer. As soon as calling modem 10 finishes sending sequence BC3 answering modem 12 begins sending 31G sequence TRN2 so that calling modem 10 can receive 30H the sequence and begin training its equalizer. After sending sequence TRN2 answering modem 12 sends 31H the final sequence BC3. Calling modem 10 receives 30I sequence BC3 and performs the final adjustment and training of its equalizer. After the completion of sending sequence BC3 by answering modem 12 the modems are ready to begin half duplex communications at 9600 bps. In the preferred embodiment, at stages 30I and 31F, the receiving modem must detect at least 32 consecutive binary 1's. If this number is not detected, then the receiving modem will request that sequences TRN2 and BC3 be sent again. This request is the same as that used to indicate a loss of equalization. The periods of silence and of sending a particular sequence are nominal and some variation is allowable without disturbing the handshaking sequence. The present invention is also compatible with 300 bps frequency shift keyed (FSK) modems. If answering modem 12 in a 300 bps modem or is set to answer at 300 bps, then answering modem 12 will not send the answer tone or the BC1, S1, S2 sequence, but will send a mark idle signal at 2250 Hz. Therefore, at point 22, calling modem 10 will, by default, switch to the FSK mode to connect with answering modem 12. However, if answering modem 12 has speed fall-up capability and is set to allow fall-ups then, in response to the S1, S2 and BC2 sequences from calling modem 10, answering modem 12 will send the BC1, S1 and S2 sequences, as appropriate, and as described above, to allow the connection at speeds greater than 300 bps. Likewise, if calling modem 10 is a 300 bps modem or is set to originate at 300 bps then calling modem 10 will not send the S1, S2 or BC2 sequences but will send a mark idle signal at 1270 Hz. Therefore, if by point 20, answering modem 12 has not detected the S2 or BC2 sequences answering modem 12 will look for the mark signal. If the mark signal is present answering modem 12 will switch to the FSK mode send the mark signal at 2250 Hz and then connect with calling modem 10 at 300 bps. However, if calling modem 10 has speed fall-up capability and is set to allow fall-up then, in response to the BC1 sequence sent by answering modem 12, calling modem 10 will send the S1, S2 and BC2 sequences, as described above, to allow the connection at speeds greater than 300 bps. Figure 2 is an illustration of the preferred signal states for 4800 and 9600 bps communications. In the preferred embodiment, the 32 point signal structure with trellis coding, as depicted in Figure 3 of V.32, is used for 9600 bps communication. Also, in the preferred embodiment, signal states A, B, C, and D are used for 4800 bps training and communications. Dibits 00, 01, 10 and 11 correspond to signal states A, B, C and D, respectively. As previously stated, TRN1 and TRN2 are non-phase encoded meaning that differential quadrant encoding is not used. It will be appreciated that the A, B, C and D points are a 4 point subset of the 32 point signal structure. Making the 4 point training structure a subset of the 32 point signal structure reduces the rotation effect when changing from a 4 point decision process (training) to a 32 point decision process (9600 bps communications). The CCITT recommendation V.32 training points are shown as A′, B′, C′ and D′ in Figure 2. It will be noted that the V.32 training points are not a precise subset of the 32 point signal structure and therefore the equalizer must compensate for the rotation effect encountered when switching from the 4 point training process to the 32 point decision process. Trellis coding is preferred because of its error detecting and correcting capability. In an alternative embodiment, trellis coding is not used for 9600 bps communications. In this alternative embodiment, the 16 point signal structure, and the 4 point subset thereof, of Figure 1 of CCITT recommendation V.32 is used for training, 4800 bps communications, and 9600 bps communications. Turn now to Figure 3, which is an illustration of the loss of equalization/retrain request sequence. Assume that the answering modem 12 is sending 51A data to the calling modem 10, and that the calling modem 10, after receiving 50A data for a period of time, undergoes a loss of equalization 50B. When answering modem 12 finishes sending 51A the data and switches to the receive mode 51B the calling modem 10 will detect the end of the data and send 50C a T1 sequence. The T1 sequence is defined as a 150 millisecond burst of a 320 Hz tone. The T1 sequence advises answering modem 12 that a loss of equalization has occurred and that retraining is requested. Answering modem 12 then confirms the request by sending 50D a 150 millisecond burst of the 320 Hz tone. At this point, both the calling modem 10 and the answering modem 12 enter wait periods 50E, 51D, respectively, which, in the preferred environment, are 250 milliseconds. At the end of the wait periods 50D, 51C, the modems go to point 33 of Figure 1B whereupon the calling modem 10 begins sending 30F training sequence TRN2. A similar operation occurs if the answering modem loses equalization. After the calling modem completes sending 52A the data and enters the receive mode 52B, then, if the answering modem 12, while receiving 53A data, has suffered a loss of equalization 53B, then answering modem 12 will send 53C the T1 sequence. The calling modem 10 will receive 52B the T1 sequence and confirm the request by sending 52C the T1 sequence. Both modems will then enter the wait state 52D, 53E and then go to point 33 in Figure 1B to begin retraining sequence. It will be noted that either modem can request retraining sequence but that, after the wait state 50E, 51D, 52D, 53E the retrain sequence will begin at point 33 in Figure 1B and the calling modem will send the training sequence first. Also, if confirmation of the request is not received the requesting modem will repeat the T1 sequence until confirmation is obtained or a time-out disconnects occurs. Turn now to Figure 4 which is an illustration of two types of half duplex communications between the modems: a data exchange, and a null exchange. In a data exchange, the transmitting modem, which may be either the calling modem 10 or the answering modem 12, first places a start-up sequence 60 onto line 11 for a start-up period, typically 15 milliseconds. During this start-up period 60, the transmitter provides the four point constellation training sequence, TRN1, TRN2, for 4800 bps or 9600 bps, respectively, for approximately 15 milliseconds. This training sequence allows the receiver baud clock in the receiving modem to lock on, and can, if desired, be used to begin updating of the adaptive equalizer coefficients in the receiving modem. This is followed by a 5 millisecond period 61a of the mark idle signal (scrambled 1's using 32 point constellation). The receiving modem begins looking for the mark idle signal 61a approximately 10 milliseconds after the start of reception of startup sequence 60. The transmitting modem then sends the flat 62a followed by a first data frame 63a. Flags 62 are the sequence 01111110. The receiving modem must detect 16 consecutive marks in the mark idle signal 61a before looking for flag 62a. Data frame 63a is followed by another flag 62b and a data frame 63b. Data frame 63b is followed by flag 62c and then data frame 63c. This flag/data frame process is repeated until the transmitting modem has sent the last data frame 63n and the last flag 62n+1. The transmitting modem then sends mark idle signal 61b which acts as a line turnaround signal. The receiving modem must detect at least 7 consecutive marks in mark idle signal 61b to recognize mark idle signal 61b as marking the end of the data exchange. At this point, since this is a half duplex operation, the transmitting modem now enters the receiving state and the modem which was the receiving modem now enters the transmitting state and transmits elements 60 through 63. A data frame 63a comprises a link layer header 63aa, a packet header 63ab, a variable length data stream 63ac, and a checksum 63ad. The data string 63ac is preferably compressed data, but may be uncompressed data. Checksum 63ad preferably encompasses parts 63aa, 63ab and 63ac, but may, if desired, encompass only a selected one or two of these parts. Checksum 63ad is used, in a manner well known to those skilled in the art, to detect transmission errors in the encompassed parts, 63aa, 63ab and 63ac. In the preferred embodiment, link layer header 63aa conforms to the protocol requirements specified for LAP-B headers, and checksum 63ad uses the HDLC/SDLC cyclic redundancy check (CRC) algorithms. The packet header 63ab carries control information. One use of header 63ab is to designate whether data string 63ac contains data or instructions (for example, the "break" instruction). Therefore, any character can be used in data string 63ac to convey data or, if desired, to convey instructions. Heater 63ab is also used to transmit flow control information. A data frame 63a need not contain packet header 63ab or data 63ac. For example, a supervisory data frame 63a which is used for link establishment, or an acknowledgement of a data reception, with no return data, would consist only of link layer header 63aa and checksum 63ad. Link layer header 63aa specifies whether a packet header 63ab exists. The presence or absence of data 63ac is determined in an inverse fashion. The data frame 63a is defined as that information between flags, such as flags 62a and 62b. A data frame, such as 63a, always contains link layer header 63aa and checksum 63ad, and header 63aa specifies whether packet header 63ab exists. Therefore, when the flag at the end of frame 63a is detected, any information between header 63ab and checksum 63ad is defined as data 63ac. The result is that the length of an individual data frame, such as 63a, will be dependent upon the control and/or data information transferred. Assume that a first device (not shown), connected to modem 10, can output data at a very high rate and a second device (not shown), connected to modem 12, can accept data at a slower rate. If modem 10 is allowed to transfer data to modem 12 as fast as the first device can output the data, the buffer in the second device will eventually overflow and data will be lost. Therefore, the receiving modem, modem 12 in this example, sends a credit or a permit to the sending modem, modem 10 in this example, advising modem 10 how many data frames or packets 63a that the sending modem may transmit. In the preferred embodiment, as explained below, a maximum of seven data frames 63a is permitted. If modem 12 sends modem 10 a credit of four then, once modem 10 has sent four data frames 63a, modem 10 cannot send any more data frames until modem 12 provides modem 10 with another credit figure. Therefore, if the second device advises modem 12 that is buffer is full or substantially full, modem 12 will not send any additional credits to modem 10. Modem 10 will then advise the first device to stop outputting data. Once the buffer in the second device has room for more data the second device will advise modem 12 that it is ready to accept more data. Modem 12 will send a credit to modem 10, and modem 10 will advise the first device to send more data to modem 10 for transmission to modem 12. This process is repeated until the first device has no more data to output. Link layer header 63aa also contains information on the number of the next frame expected to be received. If the receiving modem receives a frame with a number different than that expected, the receiving modem will advise the transmitting modem that an error has occurred and provide the frame number expected to be received. The transmitting modem will then retransmit the data, beginning with this frame number. In the preferred embodiment, the maximum data transmission length for the series of flags 62a to 26n+1 and data frames 63a to 63n is approximately 900 bytes. Also, the length of each individual data frame 63 is limited to approximately 128 bytes, and there can be up to seven data fames 63 in a data exchange. At 9600 bps this yields a maximum transmission time or less than 1 second. Therefore, one modem can only retain control of the line for less than 1 second before relinquishing control to the other modem. This prevents the users from having to wait for an excessive period before being able to send a new instruction or additional data. This limitation on the transmission length also assures that the transmitting modem periodically receives data so that the receiver carrier clock and receiver baud clock timing recovery circuits are periodically resynchronized to the clocks in the other modem. Also, the null exchange can be sent in approximately 77 milliseconds so that, when neither modem has data to send and then one of the modems has data to send, the modem with data to send can quickly obtain control of the line. In accordance with X.25 LAPB procedure, each transmission is acknowledged by use of header 63aa. However, situations frequently arise wherein neither modem has data to transfer but it is desired to maintain the connection over telephone line 11. In such situations it is also desirable to minimize the turnaround time and protocol so that when one modem has data to transfer there is not a long wait while the other modem is still sending the no data line turnaround protocol. The null exchange meets these requirements. The null exchange comprises a carrier startup sequence 60, typically 15 milliseconds, 5 milliseconds of mark idle 61a signal, five flags 62a-62e, and 15 milliseconds of mark idle 61b signal. The flags 62 are, again, the sequence 01111110. Also, as above, the receiving modem must detect at least 16 consecutive 1's in mark idle signal 61a and 7 consecutive 1's in mark idle signal 61b. It will be appreciated that the null exchange is similar to the data exchange but does not have data frames 63a-63n or flags separating the data frames. The null exchange may also be used to indicate an error condition. In the preferred embodiment, if a modem sends data, other than an acknowledgement, and gets a null exchange response, then the sending modem will assume that the data was lost. The sending modem will then query the receiving modem to determine which frame the receiving modem expects to receive next. The sending modem then begins retransmission, starting with the indicated frame. The query and retransmission are similar to the LAP-B protocol specifications. In an alternative embodiment, each modem measures, or is programmed to assume, the period of time between the end of its transmission and the beginning of the receipt of the transmission from the other modem. This period (T PT ) includes the roundtrip propagation time and the turnaround time of the other modem. After period T PT is measured for several data transfer cycles, the null exchange is not sent but, after the end of a transmission, the transmitting modem waits for period T PT plus a safety factor period (T SF ). If nothing has been received at the end of T PT + T SF , then the transmitting modem presumes that the receiving modem received the data correctly and has nothing to send. The transmitting modem then resumes transmission. Therefore, the turnaround time is reduced and the data throughput is increased by eliminating the time required to send a null exchange. In order to verify that the connection between the modems is still valid, the transmitting modem periodically pools the receiving modem and, in response, the receiving modem sends a response, such as the null exchange. Alternatively, the receiving modem periodically sends an advisory, such as the null exchange, to advise the transmitting modem that the receiving modem is still connected. If the response or the advisory is not received, then the transmitting modem assumes that the connection has been broken and accordingly advises the device to which it is connected (such as a computer). Operation at different speeds is also provided. For example, the calling modem 10 and the answering modem 12 may initially agree to communicate at 9600 bps. Assume now that the noise level of telephone line 11 substantially increases for communications in the direction from modem 10 to modem 12, but does not increase for communications from modem 12 to modem 10. Communications in both directions could be dropped to 4800 bps, but this does not take advantage of the fact that 9600 bps communications are still possible in one direction. Therefore, in one alternative embodiment, each modem sends, preferably as part of packet header 63ab, a one bit indication of the received signal quality. For example, a logic 1 for this bit indicates that 9600 bps reception is good, and a logic 0 indicates that 9600 bps reception is not good. The other modem then inspects this bit to determine whether its transmission should be at 4800 bps or 9600 bps, and transmits accordingly. This allows the two modems to communicate at different speeds. In the example above, calling modem 10 would transmit at 4800 bps and receive at 9600 bps, and answering modem 12 would transmit at 9600 bps and receive at 4800 bps. Therefore, telephone line 11 is used to its maximum capacity. The received signal quality is, of cource, determined by the receiving modem. Means of measuring received signal for example, by measuring the received data error rate, are well known to those skilled in the art. The above is not limited to 4800 or 9600 bps selection but, by using two or more bits, can also be used to allow speed fallup and speed fallback for 300, 1200, 2400, 4800 and 9600 bps. There may be cases where the noise level is so severe as to prevent either modem from receiving fallback instructions from the other modem. In such cases, the failure to receive a speed instruction will, after a predetermined timeout period, for example 250 milliseconds, cause the modem to automatically fall back to the next lower speed until communications are reestablished, another timeout occurs, or a disconnect occurs. Therefore, the modem falls back from 9600 bps to 4800 bps, then 4800 bps to 2400 bps, and so forth. In the preferred embodiment, to achieve fast line turnaround, the received data baud clock is updated, even through not used, when transmitting in the half-duplex mode. Likewise, the transmit data baud clock is updated, even though not used, when receiving in the half-duplex mode. This allows the baud clocks to free-run when not being used so that, when the line is turned around, the baud clocks will not be starting at an arbitrary position but will have remained, within the clock accuracy tolerance, in synchronization. Likewise, the transmit data carrier and receiver demodulation carrier are updated, even when not in use, so that the modem alternates between the transmit and receive modes, a minimum of adjustment is required to maintain synchronization with the connected modem. Maintaining the clocks and carriers in this manner allows a fast line turnaround rate to be achieved since minimal time is required for synchronization between the modems. Also, the equalizer coefficients are frozen while in the transmit mode. When returning to the receive mode, the equalizer coefficients are not updated for at about 24 milliseconds. This delay allows time for the transmitter of the other modem to stabilize and prevents the equalizer coefficients from being incorrectly updated. This technique also assists in achieving a fast line turnaround rate. The result of the high speed (4800 or 9600 bps), the fast line turnaround capability, and the specified maximum transmission length is to provide half-duplex operation which closely simulates the performance obtainable from full duplex operation. The trailing mark idle 61b provides for detection of end of transmission and is used by the receiving modem as a signal to change the operation of adaptive circuits, such as: freeze the equalizer tap coefficients, and begin free-running the receiver baud clock phase locked loop. This prevents these adaptive circuits from trying to adapt to the no-signal condition occurring after the other modem ceases transmitting. From the above, it will be appreciated that the present invention describes a modem which uses a high speed line turnaround protocol to maximize the data transfer rate. Also, from the detailed description above, it will be appreciated that many modifications and variations of the preferred embodiment will become apparent to those skilled in the art. Therefore, the present invention is to be limited only by the claims below.

Claims: A fast line-turnaround method for transferring data in the half-duplex mode, characterised by (a) a data transfer protocol comprising: (1) sending a first idle signal for a first predetermined period; (2) sending at least one of a predetermined flag; (3) sending a data frame, said data frame not exceeding a predetermined number of bytes; (4) repeating steps (a)(2) and (a)(3) until a predetermined number of said data frames has been sent; (5) sending at least one of said predetermined flag; and (6) sending a second idle signal for a second predetermined period; and (b) a no-data line turnaround protocol, comprising: (1) sending said first idle signal for a third predetermined period; (2) sending at least one said predetermined flag; and (3) sending said second idle signal for a fourth predetermined period. The method of Claim 1, wherein said first predetermined period is approximately 5 milliseconds. The method of Claim 1 or 2, wherein said first idle signal is the mark idle signal. The method of one of Claims 1 to 3, wherein said second predetermined period is approximately 15 milliseconds. The method of one of Claims 1 to 4, wherein said predetermined flag is the binary sequence 01111110. The method of one of Claims 1 to 5, wherein said predetermined number of bytes is 128. The method of one of Claims 1 to 6, wherein said second idle signal is the mark idle signal. The method of one of Claims 1 to 7, wherein said third predetermined period is approximately 5 milliseconds. The method of one of Claims 1 to 8, wherein said fourth predetermined period is approximately 15 millisonds. The method of one of Claims 1 to 9, wherein said predetermined number of said data frames is seven.

Inventors: CORREA GERMAN E, EASLEY MATTHEW F, MARTIN JOHN N, MCCORVEY CHARLES H JR, NASH RANDY D, PANELLA CYNTHIA A, RUBINSTEIN MICHAEL LEON, SAUSER MARTIN H JR, STRAWN DAVID F, THOMAS GEORGE R, TJAHJADI TARUNA, CORREA, GERMAN E., EASLEY, MATTHEW F., MARTIN, JOHN N., MCCORVEY, CHARLES, H., JR., NASH, RANDY D., PANELLA, CYNTHIA A., RUBINSTEIN, MICHAEL LEON, SAUSER, MARTIN H., JR., STRAWN, DAVID F., THOMAS, GEORGE R., TJAHJADI, TARUNA
Applicants: HAYES MICROCOMPUTER PROD, HAYES MICROCOMPUTER PRODUCTS, INC.
Application year: 1988
Main classification: H04L5
IPC codes: H04L25, H04L5, H04L29, H04M11