The invention relates to a method for transmitting data frames.
The invention relates to a transmitter for transmitting data frames.
The invention still further relates to a data processing system comprising a transmitter.
Data processing systems are more and more designed using a plurality of building blocks that communicate to each other via data links using a standardized protocol. Errors may occur in the communication. In particular a mobile phone is a noisy environment. The expected bit error rates are in the order of 10−12 which translates into one error every 15-20 minutes. As a result the communication protocol must detect and be able to recover from such errors.
U.S. Pat. No. 6,181,704 describes a method for transmitting data in a network from a transmitter to a receiver. Each of the transmitted data frames is assigned a corresponding sequence number. A copy of each data frame is stored in a buffer at the transmitter until an acknowledgment is received that each data frame was successfully received by the intermediary point. Once a particular data frame is successfully received by the receiver, the particular data frame is acknowledged to the transmitter, and is subsequently de-allocated at the transmitter, as are any other data frames in the buffer between the particular data frame and the previously last acknowledged data frame. Upon receipt of an error indication, the data frame indicated in the error indication is retransmitted along with all subsequent data frames. At the receiving end, all received data frames following the data frame associated with the error indication are dropped until successfully receiving a retransmitted version of the data frame. In addition, a single negative acknowledgment is used to indicate that a data frame associated with the negative acknowledgment includes at least one error and to simultaneously indicate that all previous data frames received prior to the data frame associated with the negative acknowledgment were received correctly.
As the transmitter maintains a copy of the transmitted data frames in its buffer until they are successfully transmitted, it cannot accept new data frames. Accordingly the data stream will be substantially delayed, if the number of errors is (temporarily) high.
It is a purpose of the present invention to provide for a reasonable protection against errors while providing real-time guarantees.
According to the present invention this purpose is achieved by the method according to claim 1. According to the present invention only the newest data frames are stored in the retransmission buffer. If a new data frame is produced it overwrites the oldest data frames in as far as necessary. This measure is based on the observation that for a real-time application old data frames are not usable anymore (e.g., modem I/Q samples, or video frames). Moreover, these old data frames can delay newer data frames that may still be usable directly after production, but not after a delay.
It is noted that the earlier Application IB2006/054240 filed by the same Applicant describes a data processing system has a retransmission buffer for temporarily keeping data frames available for retransmission if they are not correctly received the first time. This earlier filed Application however, the data frames are transmitted in fixed time slots. In the method described in the present application that is not necessary, as the data frames have sequence numbers. Furthermore, the retransmission buffer described in the earlier filed Application stores the data frames for a fixed duration. In the method and transmitter according to the present invention the data frames are kept in the retransmission buffer until it is necessary to overwrite them by a new data frame.
The receiver may acknowledge every correctly received data frame. However, this requires that a return link is maintained permanently activated. On the other hand if acknowledgments are omitted a transmitter cannot discriminate between the situation where an error message was sent, but not received, and the situation where no error message was transmitted.
In the preferred method of claim 3 the transmitter receives as a reminder a further error message if it did not provide a response to the error message sent first. Accordingly, each time the receiver transmits a negative acknowledgement message, it determines whether it receives a response within a predetermined time-limit and/or after counting a predetermined number of further errors. If no response is received before the time-limit and/or before the limit in the number of errors, the receiver transmits a second error-message. At the side of the transmitter this means that ambiguities are counter-acted, as the transmitter can expect a second error message if it missed an earlier error message and could not respond. Accordingly the use of positive acknowledgement messages becomes superfluous. In particular in case of relatively low error rates this enables a significant reduction of power of the return data link.
If the receiver has received no response to its second error message it may send further messages while waiting a predetermined time for the transmitters' response.
The transmitter may merely indicate that it has received the error message from the receiver. In the embodiment of claim 4 however, the transmitter retransmits the data frame for which it received an error message. In this way the data link from the transmitter to the receiver is used efficiently.
If the receiver does not receive a response to its error message, this may be caused by an out of sync condition of the data link (return data link) from the receiver to the transmitter. The measure of claim 5 provides for a resynchronization that overcomes this condition. The resynchronization may take place immediately when an error condition is detected in the verification step, as claimed in claim 6. However, taking into account that errors may occur incidentally, the resynchronization of the return data link may alternatively take place when the receiver detects that it has received no response to its first error message, as claimed in claim 7. Although resynchronization could be postponed until the second error message or even the further error message does not give a response, this is not preferred as already the absence of a response to the first error message is an indication of a more structural problem.
Likewise the occurrence of an error in a data frame received by the receiver may indicate that the data link from the transmitter to the receiver is in an out of sync condition. A repeated situation wherein the receiver does not receive a response from the transmitter may be due to an out of sync condition of the data link from the transmitter to the receiver. The measure of claim 8 overcomes this condition. A resynchronization may be initiated immediately after an error is detected as claimed in claim 9, or may be postponed until it is more likely that the error is caused by an out of sync condition, preferably when sending the second error message as claimed in claim 10.
The receiver may indicate with flow control messages, how many data frames it is prepared to receive. However, taken into account that these messages will load the return data link, a preferred embodiment the method according to the invention is claimed in claim 11. Although this may occasionally result in a situation where the transmitter sends more data frames than the receiver can handle this need not be a problem. In particularly for real-time applications the method of claim 131 is preferred. Dropping the non-accepted data frames allows the receiver to receive the remaining data frames without significant delay. In a practical embodiment of claim 14 those frames for which the receiver has insufficient storage space are dropped. In an embodiment an error message is returned to the transmitter when a data frame is dropped.
Likewise, the power consumption of the return data link can be reduced by avoiding acknowledgement messages from the receiver as claimed in claim 12.
Various alternatives are possible for dropping data frames. A device having a buffer for temporarily storing data frames preferably drops the oldest of the messages stored in its buffer.
In addition to the user data and the sequence number, the data frames preferably have some redundant information to facilitate a verification of the data frames. For example in the form of cyclic redundancy check (CRC) data. The redundant information may be used in addition to correct errors, so that a retransmission is not always necessary. Alternatively errors may be detected for example by the occurrence of data having an out of bound value, or by detecting the occurrence of sequence numbers that are out of order.
In the above description it is presumed that it is the role of the transmitter to transmit data frames to the receiver, while the receiver merely sends error messages if appropriate. However, in an alternative embodiment, the return data link from the receiver to the transmitter may be used to transmit data from the receiver to the transmitter. Also in this embodiment the present invention is favorable, as by avoiding transmission of acknowledgement messages to the transmitter more bandwidth is available for transmission of data frames.
The data link for transmission of the data frames may be implemented in various ways. E.g. the data link may be a serial or a parallel link. The data link may itself apply a coding. For example, the data may be transmitted with an embedded clock e.g. using 8b10b encoding. Alternatively data and clock may be transmitted separately.
A transmitter according to the invention is claimed in claim 15.
A data processing system comprising a transmitter is claimed in claim 17.
These and other aspects are described in more detail with reference to the drawing. Therein,
In the following detailed description of the invention, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, the invention may be practiced without these specific details. In other instances well known methods, procedures, and/or components have not been described in detail so as not to unnecessarily obscure aspects of the invention.
The operation of the controller 14 is shown in more detail in
Therein the variables oldest_seq and newest_seq respectively indicate the sequence number of the oldest data frame and the newest data frame in the retransmission buffer. The variables rd_ptr and wr_ptr respectively indicate the retransmission buffer locations that are currently read from and written to. The variable empty indicates whether data frames are available in the retransmission buffer. Frame_start[ ] is a table comprising for each data frame x the location of the first word of said data frame in the retransmission buffer 13.
In step S4_2 the controller waits for one of the following conditions to occur:
First, in step S5_1 it is verified whether the retransmission buffer 13 is full. The retransmission buffer 13 is full if the value of the write pointer wr_ptr is equal to the value of the read pointer rd_ptr and the flag empty is false. If indeed the retransmission buffer 13 is full, the oldest data frame in the retransmission buffer is therefore removed in action S5_2. This action, which is illustrated in more detail in
Therein MAX_SEQ is the maximum number of data frames.
In step S5_4 the read pointer is updated:
This pointer rd_ptr addresses the first word of this new oldest data frame in the retransmission buffer 13.
After the read pointer is updated it is verified in step S5_5 whether removing the data frame resulted in an empty retransmission buffer 13. This is the case if the read pointer equals the write pointer:
The full-buffer test S5_1 may be repeated. This may for example be necessary if a new data frame is larger than the oldest data frame stored in the retransmission buffer 13.
After the full-buffer test S5_1 and the possible oldest-frame removal S5_2, the word to be, written wr_word is inserted in the retransmission buffer at the wr_ptr position in step S5_6, the wr_ptr pointer is incremented to the next retransmission buffer location in step S5_7, and the empty flag is set to false in step S5_8, because at least the current word wr_word is in the retransmission buffer 13.
In step S5_9 it is determined whether a new data frame has been completely stored in the retransmission buffer 13, by inspecting the value of the flag last_word_in_frame provided by the production module 11.
If it is determined in step S5_9 that a new data frame has been completely stored in the retransmission buffer 13 it is also necessary to update information about the start of the next data frame. The number of data frame entries is limited. Accordingly in step 55_10 it is verified whether all numbers are in use. In this particular example, the least significant bits of the sequence number are used to identify a data frame in the retransmission buffer 13. E.g., if there are 8 bits used for the sequence number, the least significant 4 bits can be used to maintain 16 data frame entries.
The following test reveals whether a data frame entry is in use:
If this is the case, in step S5_11, worked out in
The start of the newest data frame is calculated in step S5_12 by:
Subsequently the index pointing to the newest data frame is incremented in step S5_13:
When a negative acknowledge NAC is received, the data transmitter 10 prepares the retransmission buffer 13 for retransmission, as shown in more detail in
First in step S6_1 it is checked if the reported sequence number seq is actually stored in the retransmission buffer. This is the case if:
If so, in step S6_2 all the data frames up to and including the data frame with number seq are removed from the retransmission buffer. Accordingly the variable oldest_seq is updated as:
And in step S6_3 the new read pointer is updated as:
In step S6_4 the currently being transmitted data frame is also removed from the retransmission buffer. Removal is achieved by incrementing the write pointer wr_ptr to the start of the next data frame:
In step S6_5 the replay pointer is set to the beginning of the oldest data frame:
Retransmission continues (see
If all the buffer has been replayed (replay_ptr==wr_ptr), a message is issued in step S7_5 that normal operation mode is assumed again (S4_2,
The receiver further has an error detection module 26 for detecting an error in the at least one data frame. The error detection module 26 may for example detect the following errors.
The error detection module 26 here functions as the module for signaling an error message. In case an error is detected, the error detection module 26 requests via req_NAC that an error indication message is sent to the transmitter 10. The message req_NAC includes information indicative for the sequence number of the last correctly received data frame. Such indicative information is preferably the sequence number itself of the last correctly received data frame. Alternatively it is for example the sequence number of the first data frame received with errors. This is however not always possible, as the detected errors may not necessarily be associated with a data frame. They can be associated with e.g., a control frame, or an invalided idle symbol.
The receiver 20 in the data processing system further includes a timer 27 that indicates the amount of time lapsed from the moment the error message req_NAC transmission is initiated. After expiry of a predetermined amount of time it provides a signal expire to the error detection module 26. In response to this signal the error detection module 26 initiates a new transmission of an error message. The error detection module 26 further may initiate a resynchronization of the connection to the transmitter with a signal req_link_sync.
In this scheme the oval blocks indicate a state. The indented rectangular blocks indicate a detected condition, and the unindented rectangular blocks indicate an action State S9_1 is the initial state of the receiver 20 after reset. From that state it transfers to state S9_2, which is maintained as long as no errors are detected.
Condition C9_3 implies an error is detected. In that case actions A9_4 and A9_5 are carried out. Action A9_4 is the communication of a message req_NAC to notify the transmitter 10 of the data frame of the sequence number of the last correctly received data frame.
Action A9_5 is starting the timer 27 to measure the waiting time for a response of the transmitter 10 to said message.
State S9_6 is a waiting state wherein the receiver waits for a response of the receiver. During said waiting stage S9_6 the following conditions may occur:
As indicated by the dashed box in
At time t1 the transmitter 10 transmits a data frame. This data frame is received at time t2 by the receiver 20. In this example the receiver detects that an error occurs in the time interval t1-t2. In response thereto, at time t3, it transmits an error message NAC to notify the transmitter 10 of the data frame of the occurrence of the error. The error message includes at least information relating to the sequence number of the last correctly received data frame. The message is received at time t4 by the transmitter 10, and triggers a retransmission of one or more data frames at time t5. At time t6 the receiver detects the retransmission and stops it timer.
Alternatively, immediate resynchronization upon detection of the error is an option. However, the bit error rates are expected to be much higher (e.g., once every second) than the synchronization error rates (e.g., once every hour). The link resynchronization is only needed for synchronization errors, not for bit errors. As a result, usually the system will recover from the error without link resynchronization (see
After synchronization of the data link 40 at time t8 the receiver 20 transmits a new error message. This error message is received at t9 by the transmitter 10. In response thereto the transmitter first synchronizes the data link 30 from the transmitter 10 to the receiver 20, and subsequently at time t10 retransmits one or more data frames. At time t11 the receiver 20 notices that the retransmission is started, and stops its timer 27.
It is remarked that the scope of protection of the invention is not restricted to the embodiments described herein. Parts of the system may implemented in hardware, software or a combination thereof. Neither is the scope of protection of the invention restricted by the reference numerals in the claims. The word ‘comprising’ does not exclude other parts than those mentioned in a claim. The word ‘a(n)’ preceding an element does not exclude a plurality of those elements. Means forming part of the invention may both be implemented in the form of dedicated hardware or in the form of a programmed general purpose processor. The invention resides in each new feature or combination of features.
Number | Date | Country | Kind |
---|---|---|---|
07102084.6 | Feb 2007 | EP | regional |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/IB2008/050372 | 1/31/2008 | WO | 00 | 12/4/2009 |