Cooperative Coding in Wireless Communications

Multimedia Communications Laboratory
University of Texas at Dallas


This web page contains an introduction to coded cooperation for wireless networks. This document emphasizes basic ideas. Many important details have been glossed over for the sake of brevity; the interested reader is referred to the references for more information.

Coded cooperation is a framework where wireless mobiles can jointly transmit their signals, thus achieving a number of significant improvements in communication over multi-path fading channel: improved clarity and intelligibility for voice communications, increased rates for data communications, lower transmit power and increased battery life.

In coded cooperation, two users form a partnership to transmit their information using both of their antennas (see Figure below). In a wireless channel, each user's transmission is receivable, to different degrees, by the other users as well as the base station. Therefore, a mobile may receive and re-transmit the data of a partner to the base station, thus providing assistance to the original mobile. Because the two streams are received via independent fading paths, the spatial diversity will provide an improvement in overall reception, even if we scale the powers (as is required by fairness) so that the overall amount of power per data bit in the system remains the same.

User cooperation

Figure 1. User cooperation.

So far, this is nothing but a relaying scheme, something that has been considered previously in the network layer as well as (to a lesser extent) in the physical layer. While this idea by itself is interesting and yields some gains, it has several fundamental limitations. Perhaps the most important is that relaying results in a loss of overall bandwidth or throughput in the multi-user system. There are also other practical difficulties (see [1]). The consideration of these issues led to the development of coded cooperation framework, which we describe below.

Coded Cooperation

We propose a new user cooperation framework in which cooperative signaling occurs as part of channel coding. The data for each mobile is divided into blocks; each of these data blocks, as is customary in communication systems, is encoded to produce a codeword. Each codeword is partitioned into two segments, called frames. The codeword segments are designed such that the first frame, if correctly received, is decodable and can yield the information bits. The second frame contains additional parity bits. The length of these two segments need not be equal.

More specifically, the first frame contains a N1-bit coded version of the source data. The cooperation process starts by both users transmitting their own first frame. This first frame is received at both base station and the partner, probably with different SNR's. If the partner correctly decodes the user's first frame (determined by checking the CRC), the partner computes and transmits N2 additional parity bits for the user's data in the second frame, producing a more powerful overall code. The base station will receive both these code components and decode accordingly. Diversity gain arises from the two transmissions arriving via independent fading paths (spatial diversity).

Due to the channel uncertainties, the user's data may sometimes not be received successfully by the partner. In that event, the partner will use the second frame to encode and transmit additional parity bits for himself. Note that each user always transmits a total of N = N1 + N2 bits per source block over the two frames, and the users only transmit in their own multiple access channels. Figure 2 below illustrates the coded cooperation framework.

Coded cooperation framework

Figure 2. Coded cooperation framework.

Coded cooperation maintains the same information rate, transmit power, and bandwidth (for both users) compared to the non-cooperative system. In other words, no additional system resources are required; there is no loss of rate or power in the system compared to the non-cooperative case. How is this possible? The key idea is that, first, each user recoups the rate used for his partner, because the partner will contribute an equal number of coded bits back to him. Second, the bits are not repeated by the partner, unlike a traditional relay. The scheme used in this framework is somewhat similar to the "incremental redundancy" used in hybrid ARQ coding. Because we keep the overall coded bitrate, as well as the code rates, to be constant, there is no loss of rate due to cooperation.

In addition, the general framework allows adaptation of the code rate between the first and second frames (e.g, changing the values of N1 and N2). In other words, changing the code rates allows us to manipulate the degree of coupling between the two cooperating users, according to channel conditions. This provides an important element of flexibility to optimize the performance of the system according to channel conditions.

In general, various channel coding methods can be used within the coded cooperation framework. For example, the overall code may be a block or convolutional code, or a combination of both. The partitioning of the code bits for the two frames may be achieved through puncturing, product codes, or other forms of concatenation. In addition, some form of space-time coding may be used for transmission of the second frame. As an illustration, we employ a simple but very effective implementation using rate-compatible punctured convolutional (RCPC) codes. The code bits for the first frame are obtained by puncturing a lower rate code word. The additional parity bits transmitted in the second frame are those bits that are punctured in the first frame. Figure 3 below illustrates this RCPC code implementation.

Implementation of coded cooperation using RCPC codes

Figure 3. Implementation of coded cooperation using RCPC codes.


To illustrate the performance gains that coded cooperation achieves, we consider the bit error rate (BER) versus the average (over fading) SNR of the channel between a user and the base station (uplink channel). The results shown below are obtained via simulation using the RCPC code implementation described above with N1 = N2. Both of the figures shown below are for the case of quasi-static fading. In other words, the fading coefficients for each channel remain constant over the transmission of each source block. In addition, the channel between the users (interuser channel) and each user uplink channel are mutually independent.

Figure 4 below shows the results when both users have the same average SNR for their uplink channels. The BER curves are shown for various interuser channel average SNR values. Coded cooperation clearly achieves impressive gains compared with the non-cooperative system. Even when the interuser channel has an average SNR of 0dB, much less than that of the user uplink channels, coded cooperation still provides a gain of 2-3dB, which is quite significant.

Figure 4. Performance of coded cooperation when the users have
equal average uplink SNR.

Figure 4. Performance of coded cooperation when the users have equal average uplink SNR.

Figure 5 below shows the results when one user has a significantly better uplink channel than the other. In this case, User 1's average uplink SNR is fixed at 20dB, and we plot the BER for both users as User 2's average uplink SNR varies from 0dB to 20dB. The interuser channel average SNR is 10dB. As we might expect, User 2 improves dramatically with coded cooperation. More interestingly, User 1 also improves significantly, a result which is not necessarily intuitive. This result demonstrates that under coded cooperation even users with very good uplink channels have a strong incentive to cooperate with users that have poorer uplink channels.

Figure 5. Performance of coded cooperation when the users have
different average uplink SNR.

Figure 5. Performance of coded cooperation when the users have different average uplink SNR.

As alluded to in the first paragraph of this web page the gains in BER shown in the above figures may be realized as improvements in speech quality for voice applications, or higher rates for data and video applications. Alternatively, the performance improvements from coded cooperation may be used to increase the effective range of the mobile units or to prolong the battery life. All of these are critical improvements for the next-generation wireless systems.

Further Work

There is more work that is on-going in our lab concerning various aspects of coded cooperation. In particular, we are investigating various coding methodologies for cooperation, as well as code design and rate control issues. We are interested in power control under cooperative regimes. In addition, we plan to extend the coded cooperation framework to include more than two cooperating users.

We have already made progress on two critical fronts that are not currently reflected in this web page: turbo-coded cooperation and space-time coded cooperation. These results have been submitted for publication.

There is also available a complete analytical bit-error and block-error rate analysis of coded cooperation under a variety of scenarios. The interested reader is referred to [3].


This work was supported in part by a grant from the National Science Foundation.


  1. T. E. Hunter and A. Nosratinia, "Cooperation Diversity through coding," in Proc. IEEE ISIT, Laussane, Switzerland, June, 2002, p. 220.

  2. T. E. Hunter and A. Nosratinia, "Coded Cooperation under slow fading, fast fading, and power control," to appear in Proc. Asilomar Conf. Signals, Syst., Comput., Pacific Grove, California, November 2002.

  3. T. E. Hunter and A. Nosratinia, "Performance analysis of coded cooperation diversity," to appear in Proc. IEEE ICC, Anchorage, Alaska, May 2003.

Last modified January 2003

Back to MCL Main Page