Abstract
Methods for simultaneous packet transmission (SPT) may be used to transmit packets simultaneously on a communications link such the orthogonal frequency division multiplexed multiple access (OFDMA) downlink used in used in WiFi and LTE cellular/wireless mobile data applications. A first SPT method may employ multiple data streams and selects a subset of streams to form symbols during every intervals. This allows the use of variable code rates on different streams thereby increasing the overall throughput. A second SPT method may transmit a second data stream implicitly while transmitting a data stream explicitly on a communication channel. These SPT methods may be used either individually or jointly, and may be implemented via software changes at the transmitter and the receiver. Additionally, methods for applying constrained interleaved coded modulation (CICM) to low-density parity check (LDPC) codes and decoding LDPC codes with CICM are presented.
Claims
1. A communication system comprising: a first apparatus comprising a transmitter, wherein the first apparatus is configured to: receive a first stream of bits and a second stream of bits; apply a component C.sub.1 that takes the first stream of bits as its input and outputs a stream of bits according to the rules of processing of C.sub.1; select a position between 1 and n =2.sup.n.sub.s, according to every block of n.sub.s bits of the second stream of bits; modify the stream of bits at the output of component C.sub.1 by flipping the position selected by a bit position selector in every block of n bits of the stream of bits at the output of component C.sub.1; apply a component C.sub.2 that takes the modified stream of bits at the output of component C.sub.1 as its input and outputs a stream of bits according to the rules of processing of component C.sub.2; and form a stream of symbols by mapping every block of m bits of the stream of bits at the output of component C.sub.2 onto a constellation point of a 2m-ary signal constellation.
2. The communication system of claim 1, further comprising: a second apparatus comprising a receiver that is communicatively coupled to the first apparatus via a communication channel, wherein the receiver is configured to receive a signal comprising the 2m-ary signal constellation and wherein the second apparatus is configured to: calculate a bit metric of every bit of each m-bit symbol on the 2m-ary signal constellation using the received signal; reverse the processing of component C.sub.2 used at the transmitter, in accordance with the rules of processing of component C.sub.2 used at the transmitter, using the bit metrics calculated from the received signal and any soft information provided to it by component C.sub.1 and then provide soft information of the stream of bits at the input of component C.sub.2; adjust for any bit metrics available for component C.sub.1 in the received signal; reverse the processing of component C.sub.1 used at the transmitter, in accordance with the rules of processing of component C.sub.1 used at the transmitter, using the soft information available and any available bit metrics of the stream of bits output by component C.sub.1 and then update the soft information at the stream of bits at the output of component C.sub.1; and run iterations up to a selected number of iterations or until any selected stopping criterion is met.
3. The communication system of claim 1, where components C.sub.1 and C.sub.2 are component codes of a turbo product code.
4. The communication system of claim 1, where components C.sub.1 and C.sub.2 are component codes of a serially concatenated code.
5. The communication system of claim 2, wherein components C.sub.1 and C.sub.2 are component codes of a turbo product code.
6. The communication system of claim 2, wherein components C.sub.1 and C.sub.2 are component codes of a serially concatenated code.
7. The communication system of claim 2, wherein the second apparatus is further configured to: adjust the soft information of the stream of bits at the input of component C.sub.2 using the most recent soft information available in the stream of bits output by component C.sub.1.
8. The communication system of claim 2, wherein the second apparatus is further configured to: adjust the soft information of the stream of bits at the output of component C.sub.1 using the most recent soft information available at the input of C.sub.1.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) A further understanding of the nature and advantages the present disclosure may be realized by reference to the following drawings.
(2) FIG. 1 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(3) FIG. 2 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(4) FIG. 3 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(5) FIG. 4 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(6) FIG. 5 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(7) FIG. 6 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(8) FIG. 7 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(9) FIG. 8 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(10) FIG. 9 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(11) FIG. 10 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(12) FIG. 11 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(13) FIG. 12 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(14) FIG. 13 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(15) FIG. 14 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(16) FIG. 15 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(17) FIG. 16 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(18) FIG. 17 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(19) FIG. 18 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(20) FIG. 19 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(21) FIG. 20 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(22) FIG. 21 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(23) FIG. 22 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(24) FIG. 23 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(25) FIG. 24 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(26) FIG. 25 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(27) FIG. 26 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(28) FIG. 27 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(29) FIG. 28 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(30) FIG. 29 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(31) FIG. 30 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(32) FIG. 31 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(33) FIG. 32 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(34) FIG. 33 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure;
(35) FIG. 34 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure; and
(36) FIG. 35 shows designs illustrating exemplary methods in accordance with various aspects of the present disclosure.
DETAILED DESCRIPTION
(37) The technology disclosed herein can be used with any communication link that transmits a stream of data from the transmitter to the receiver. The data can be in the form of frames or packets of bits, or in the form of individual bits. These frames or packets of bits, or individual bits can be originated from different types of data signals such as those found in multimedia type applications. For example, these signals in a multimedia application can be video and voice, or voice and data, etc. The technology disclosed herein can also be used when multiple packets or bits that are originated from the same type of data signals, such as voice only or data only, etc. Therefore, the technology disclosed herein is applicable to any communication link that transmits multiple packets or multiple bits originated from the same data signal or different types of data signals. Therefore, the technology disclosed herein is applicable to practically all communication systems. Specifically, the technology disclosed herein can be applied on the uplink and downlink of the 4G LTE and 5G systems, the uplink and downlink of WiFi systems, transmission over the OTN, for the transfer of data between a cloud and a user in cloud computing, in communication links of internet of things, or any other system alike. The technology disclosed herein can also be applied in medical applications, for transferring information collected by a single or a collection of sensors to (a) medical devices using a wired or a wireless channel, or (b) to a smart phone for transmission to a remotely located physician, etc.
(38) In one aspect, the technology disclosed herein includes at least two separate techniques: the SPT technique and the IPT technique. It also includes the SSPC unit. The SPT and IPT techniques enhance the overall throughput of a communication link. Both of these two techniques do not require any hardware modification in the actual transmission system. Instead, they both only require simple software modifications at the transmitter in the encoding of data and at the receiver in the decoding of data. Any communication link can employ either the SPT technique or the IPT technique individually or it can employ both the SPT technique and the IPT technique jointly to further enhance the throughput. The SSPC unit can feed a single stream of data into parallel streams in a structured manner. The parallel streams can process the data at different rates and speeds. Therefore, the SSPC unit can be used with a SPT scheme or an IPT scheme, or it can used with any parallel processing system where the processes can perform any operation. In SPT and IPT techniques, the operations are coding operations. Other operations that can employ SSPC include packaging, routing, scheduling, etc., which include distributing different tasks into different branches, divisions, etc.
(39) One other important application of the IPT technique is in encryption and security of transmission. The IPT can be effectively employed in a communication link to add an extra layer of encryption by employing the IPT technique in selected portions of the entire data stream. The selected portions can be jointly decided by the transmitter and the receiver. FIG. 14 shows the structure of a communication link where IPT adds an extra layer of encryption to an already encrypted stream of data. The encrypted data using the first layer of encryption is divided into an explicit stream and an implicit stream in selected portions of the data stream. If an intruder is to recover the data stream correctly, the intruder first needs to know the portions of the stream that has employed the IPT technique. In addition, different implicit codes can also be used in the different portions in which the IPT technique is used to further improve security of the transmission. The same method can be used for secure data storage. The data can be stored as an IPT encoded signal which has an explicit and an implicit data stream. In addition, the IPT technique can be inserted in selected portions of the stored data to introduce a second layer of security of the stored data as described before. If an intruder is to recover the actual information from the stored data, the intruder would need to first know the portions where the IPT technique has been used and what explicit and implicit codes have been used in each of those portions to create those IPT signals. The IPT signal can be formed on an already encrypted data thereby making the IPT signaling portion to act as a second layer of security.
(40) Consider a 2-level SPT embodiment that employs three streams, streams 1, 2 and 3, and an overall 4-ary QPSK constellation and the mapping shown in FIG. 1. Such 4-ary constellations are very common in practice. For example, a 4-ary constellation shown in FIG. 1 is commonly used on the downlink of the 4G LTE when the channel between the base station and the user is weak. However, in most common signaling systems, such as in the current 4G LTE standard, Gray coding is commonly used instead of the mapping policy shown in FIG. 1. According to the SPT technique described before, a 2-level SPT embodiment shown in FIG. 6 with the signal constellation shown in FIG. 1 employs one first level stream (stream 1) and two second level streams (streams 2 and 3). The first bit of every symbol is taken from stream 1 while the second bit is taken from stream 2 if the first bit of the symbol is a “zero” and from stream 3 if the first bit of the symbol is a “one”. The 4-ary overall constellation is partitioned into two 2-ary partitions as shown in FIG. 1. The partition 1 in FIG. 1 is assigned to stream 2 and is used when the first bit of every symbol is a “zero”. Similarly, the partition 2 is assigned to stream 3 and is used when the first bit of every symbol is a “one”. If all packets are of the same type, a basic SSPC block shown in FIG. 2 designed as described before can be used to systematically feed the packets into different streams of the SPT scheme. At the end of the transmission, as described before, an artificial terminating packet can be introduced on stream 1 to complete any partially completed packets on streams 2 and 3. If the packets are from different types of signals as in a multimedia application, different streams can represent different types of signals. In some embodiments, all streams at a particular level can be the same type of signals, For example, in a multimedia application that transmits data and voice, stream 1 can be formed by data while streams 2 and 3 can be formed by voice. In such embodiments, as described before, a basic SSPC block can be used as shown in FIGS. 9 and 10 to feed packets into different streams at the same level. As described before, streams 2 and 3 of this 2-level SPT scheme that uses the signal constellation in FIG. 1 have a 3 dB advantage over stream 1. Therefore, this 2-level SPT embodiment can employ a code with a significantly higher rate on streams 2 and 3 than the rate of the code employed on stream 1. As a result, this 2-level SPT embodiment can have a significantly higher overall throughput over a scheme that employs the same constellation with Gray coding to transmit a set of packets a using single stream of packets. Since every symbol carries one bit from stream 1 and one bit from streams 2 or 3, the overall rate of the 2-level embodiment is R=(R.sub.1+R.sub.2)/2, where R.sub.1 is the rate of the code used on stream 1 and R.sub.2 is the rate of the code used on streams 2 and 3. For example, in LTE application, if the R.sub.1=⅓ and R.sub.2= 4/7, then R=0.452, representing a 35.6% increase in the overall throughput over a traditional turbo coded scheme with rate 1/3.
(41) Consider a second 2-level SPT embodiment that employs a 16-QAM overall constellation as shown in FIG. 15. The 16-QAM overall constellation is partitioned into four 4-ary partitioned constellations as highlighted in FIG. 15. Therefore, in this embodiment shown in FIG. 15, M=16, M.sub.1=M.sub.2=4 and m.sub.1=m.sub.2=2. Therefore, the first two bits (primary 2 bits) of every symbol identifies the specific partition as shown in FIG. 15. As a result, this 2-level SPT has one primary stream (stream 1) and four secondary streams (streams 2 through 5). As shown in FIG. 15, Gray coding is maintained for the first two bits of every symbol among the four partitions, and Gary coding is also maintained among the last two bits of constellation points within every 4-ary partitioned constellation. During transmission, the first two bits of every symbol which are taken from stream 1 identify the specific partitioned constellation and the associated stream which feeds the last two bits of that symbol. Specifically, the embodiment shown in FIG. 15 assigns the first two bit combinations “00”, “01”, “10”, and “11” to streams 2, 3, 4 and 5 respectively and the corresponding respective partitioned constellations are highlighted in FIG. 15. As described before, all partitioned constellations have a 6 dB advantage over the overall signal constellation. Therefore, bits on streams 2 through 5 have a 6 dB advantage over those on stream 1. Therefore, the rate of the code employed by streams 2 through 5, R.sub.2, can be significantly higher than the rate of the code employed on stream 1, R.sub.1. Since every symbol carries two bits from stream 1 and two bits from one of the streams 2 through 5, the overall rate of the SPT scheme is R=(R.sub.1+R.sub.2)/2.
(42) The above embodiment can be modified to form a 3-level SPT embodiment by sub-partitioning each 4-ary partitioned constellation into two 2-ary sub-partitioned constellations. FIG. 16 illustrates one selected level-2 partitioning and the two level-3 partitionings in that level-2 partitioning. Since the overall 16-QAM constellation is partitioned into four level-2 partitioned 4-QAM constellations, there is one primary stream (stream 1), and four level-2 (or secondary) streams (streams 2 through 5). Similarly, since each level-2 partitioned constellation is further partitioned into two level-3 2-ary partitioned constellations, each level-2 stream initiates two level-3 streams (tertiary streams), and therefore, there are eight level-3 streams (streams 6 through 13). Therefore, the 3-level SPT that employs the 16-QAM constellation shown in FIG. 16 employs thirteen streams in total. Every symbol is formed by two bits from the level-1 stream 1, one bit from one of the level-2 streams (streams 2 through 5), and one bit from one of the level-3 streams (streams 6 through 13). This 3-level SPT forms symbols as described below: (a) first two bits of the symbol that are taken from stream 1 decide one of the four level-2 partitioned constellations and the corresponding level-2 stream from streams 2 through 5 as shown in FIG. 16, (b) 3rd bit of the symbol which is taken from the level-2 stream identified in (a) is used to identify the level-3 partition within the selected level-2 partitioned constellation and to select the corresponding level-3 stream (from streams 6 through 13), and (c) the 4th bit of the symbol which is taken from the identified level-3 stream select the specific constellation point from the selected level-3 partitioned constellation. Note that all level-2 bits have a 6 dB advantage over the primary bits, and all level-3 bits have a 9 dB advantage over primary bits. Therefore, if the rates of the codes employed for level-1, level-2 and level-3 bits are R.sub.1, R.sub.2 and R.sub.3 respectively, their values can be chosen according to R.sub.3>R.sub.2>R.sub.1. Since every symbol carries two level-1 bits, one level-2 bit and one level-3 bit, the overall rate of the 3-level SPT shown in FIG. 16 is R=(2R.sub.1+R.sub.2+R.sub.3)/4.
(43) Consider the comparison of a SPT scheme that employs multiple streams with a traditional coded scheme that employs a single stream that uses Gray coding on the constellation. Since the SPT technique alters the mapping from Gray coding, depending on the code employed, the rate of the code on stream 1, R.sub.1, may need to be lowered below the rate of the traditional coded scheme, R′, in order to make the frame error rate of stream 1 about the same as that of the traditional coded scheme, However, since the code rate on the remaining streams of a SPT can be significantly higher than R′, the overall code rate R of the SPT can be significantly higher than R′. Therefore, depending on the application, the code rates on different streams of a SPT can be selected to achieve the highest increase in the overall code rate above the code rate of a traditional coded scheme,
(44) Another preferred 3-level SPT embodiment can be constructed with a 64-QAM constellation. This embodiment is constructed with parameters M=64, M.sub.1=M.sub.2=M.sub.3=4 and m.sub.1=m.sub.2=m.sub.3=2. FIG. 5 shows one level-2 partitioning and one level-3 partitioning within that level-2 partitioning of that 64-QAM constellation. Therefore, the overall 64-QAM constellation is partitioned into four level-2 partitioned 16-QAM constellations. The specific partition and the corresponding level-2 stream (from streams 2 through 5) is selected according to the first two bits of every symbol which are taken from stream 1 (level-1 stream which is also called primary stream). Each partitioned 16-QAM constellation is further partitioned into four level-3 partitioned 4-QAM constellations. The specific level-3 partitioned constellation and the corresponding level-3 stream (streams 6 through 21) from the selected level-2 partitioned constellation is selected according to the 3rd and 4th bits of the symbol which are taken from the selected secondary stream. The 5th and the 6th bits of the symbol taken from the selected level-3 stream select the specific constellation of the selected 4-ary sub-partition.
(45) FIG. 17 shows an embodiment that uses the IPT technology described before. The explicit code C.sub.Ex and the implicit code C.sub.Im can be the 4G LTE turbo code. This embodiment uses of n=16, k=1 and n.sub.s=4 to increase the throughput by 25% when both C.sub.Ex and C.sub.Im have the same rate As stated before C.sub.Im can be a higher rate code than C.sub.Ex. The embodiment in FIG. 17 employs a 4-ary constellation with Gray coding. In general any 2{circumflex over ( )}m-ary constellation with Gray coding or any other mapping policy on the constellation can be used with IPT signaling. As described before, if the IPT technique is coupled with BICM or CICM other mapping policy can be preferably used to enhance performance.
(46) FIG. 18 shows an embodiment that uses both SPT and IPT techniques simultaneously by employing the IPT technique on each stream of a SPT scheme. FIG. 18 shows the use of the IPT technique on each of the three streams of the 2-level SPT scheme described in FIG. 6 that employs a 4-ary constellation shown in FIG. 1. The explicit code C.sub.Ex and the implicit code C.sub.Im of the three streams can be selected differently from stream to stream. In general, each stream at every level of an SPT scheme can transmit an explicit stream and an implicit stream separately by using the IPT technique. Different embodiments can use the IPT technique at only selected streams of a SPT scheme. Since an N-level SPT needs to correctly decode all streams at levels 1 through (N−1), IPT technique can only be used at the Nth level to reduce complexity.
(47) In the following paragraphs, the concept of implicit transmission with bit flipping (ITBF) is explained. Let us consider two components, C.sub.1 and C.sub.2, of a communication system with an incoming sequence u and outgoing sequence v and an optional interleaver π connected as illustrated in FIG. 19. The sequences u and v can be the message sequence and the coded sequence, or they can be two sequence in the middle of processing at the transmitter. Further, C.sub.1 and C.sub.2 can be (a) two component block codes of a turbo product code (TPC), or (b) any two types of component codes of a serial concatenation from the family of block codes or convolutional codes, or (c) a code and a modulator in a coded modulation system that employs any single code such as a block code, and/or a convolutional code, and/or a turbo code and/or a low density parity check (LDPC) code. The technology disclosed herein applies to a coded system or a coded modulation system where the two components C.sub.1 and C.sub.2 carry out some processing like encoding or modulation at the transmitter, and the same two components provide soft information of their input and the output streams of bits at the receiver. Similarly, the technology disclosed herein also applies to configurations of two components C.sub.1 and C.sub.2 with input u and output (v.sub.1, v.sub.2) and an optional interleaver as illustrated in FIG. 20. If necessary, the number of outputs can be more than two. The components C.sub.1 and C.sub.2 of FIG. 20 can be two component codes of a parallel concatenated code with an interleaver which is also well known in the literature as a turbo code. Therefore, FIG. 19 and FIG. 20 are applicable to almost all communication systems in practice including 4G and 5G systems.
(48) This aspect of the present disclosure, referred to as implicit transmission with bit flipping (ITBF), describes a technique that allows transmission of additional information implicitly in a communication system that includes two components as illustrated in either FIG. 19 or FIG. 20. The ITBF technique is based on the observation that the information about the output of C.sub.1 is provided by C.sub.1 and also by C.sub.2 as its input. FIG. 21 describes the processing that takes place at the transmitter when the ITBF technique is applied to the configuration in FIG. 19. As illustrated in FIG. 21, the transmitter (a) divides the output sequence of C.sub.1, v, into blocks of a pre-selected number of n bits, (b) selects one bit from it in each block of n bits uniquely in a bit position selector based on n.sub.s=└ log.sub.2n┘ number of implicitly transmitted bits from a separate implicit information stream, and (c) flips that selected bit on v in a bit flipping unit to form the sequence v′ before forwarding it to C.sub.2 via an optional interleaver, where, └.┘ denotes the standard floor function. If necessary, the optional interleaver could be placed before the bit flipping unit too. The output of the bit flipping unit, v′, is the sequence processed by the component C.sub.2 to form the transmitted sequence v.sub.t as shown in FIG. 3. FIG. 3 highlights the flipping operation for any general kth block of n bits of V, v.sub.k, to form the kth block of v′, v′.sub.k. Note that the implicit stream is a pure information stream without any coding. Further, note that C.sub.1 sees every n bit block at its output without the flip (which is v) while C.sub.2 sees the output of C.sub.1, which is at the input of C.sub.2, with the flip (which is v′). Therefore, the information carried by every block of n.sub.s implicit bits during the transmission of every block of n bits of v (which is delivered by the flipped bit position) can be extracted by comparing the information of v′ provided by C.sub.2, I.sub.C.sub.2(v′) and the information of v provided by C.sub.1, I.sub.C.sub.1(v). In accordance with the present disclosure, it is proposed that the comparison of I.sub.C.sub.1(v) and I.sub.C.sub.2(v′) is done by using a flipped position extraction (FPE) unit as illustrated in FIG. 22. However, all other methods that use I.sub.C.sub.2(v′) and I.sub.C.sub.1(v) to handle the flipped bit are within the scope of the present disclosure.
(49) ITBF decoding can be performed iteratively by running soft or hard iterations between components C.sub.1 and C.sub.2 as illustrated in FIG. 23. However, when exchanging information from C.sub.1 to C.sub.2 and from C.sub.2 to C.sub.1, it is necessary to employ a FPE as shown in FIG. 23. In many known applications without any flipping (i.e., v=v′), such as in a turbo product code (TPC), the output of C.sub.1 (V) is also directly transmitted as a part of the transmitted sequence v.sub.t. In such applications, C.sub.1 carries channel information in addition to the extrinsic information obtained from C.sub.2. When ITBF technique is used in such applications, channel information (also known as bit metrics) of v′, L.sub.ch(v′), is carried by the transmitted sequence v.sub.t. In order to obtain channel information of V, L.sub.ch(v), which should be used in the decoding of C.sub.1, pass L.sub.ch(v′) through the same FPE going from C.sub.2 back to C.sub.1 as shown in FIG. 5. Therefore, the ITBF iterative decoding can be performed according to the following algorithm: 1. Decode C.sub.2 and extract extrinsic information 2. Pass the extrinsic information obtained in step 1 to a first FPE, FPE1, to modify that extrinsic information by using the most current extrinsic information obtained from C.sub.1. If no extrinsic information of C.sub.1 is available, bypass FPE1 and pass the extrinsic information from C.sub.2 found in step 1 to C.sub.1. If C.sub.1 has channel information, use the same FPE1 to modify the channel information corresponding to C.sub.1. If FPE1 is not available, use the channel information of v′ obtained from the channel as the channel information of C.sub.1. 3. Decode C.sub.1 using the extrinsic information and any available channel information provided to it in step 2 and extract extrinsic information of the output of C.sub.1 4. Pass the extrinsic information obtained in step 3 to a second FPE, FPE2, to modify that extrinsic information by using the most current extrinsic information obtained from C.sub.2 in step 1. 5. Go back to step 1 for the next iteration
(50) However, if C.sub.1 and C.sub.2 are component codes of a strong code such as a serial or a parallel concatenated code or a LDPC code, then it may be necessary to use a two step decoding procedure. In the first step run a pre-selected N.sub.1 number of iterations in the normal way without any FPEs in order to capture the power of the code. Then in the second step, run a pre-selected N.sub.2 number of ITBF decoding iterations described above in five steps. In the second step one or a small pre-selected number of iterations can be used in the decoding of the powerful code.
(51) A FPE can be implemented in many different ways. It can be implemented in a hard sense or in a soft sense. In the hard sense implementation, the FPE compares I.sub.C.sub.1(v) and I.sub.C.sub.2(v′), and determines the most likely bit position k that has been flipped within every block of n bits. Then the FPE flips the incoming soft information at that position before forwarding it to the next component. Specifically, FPE1 in FIG. 23 takes in I.sub.C.sub.1(v) and the most recent I.sub.C.sub.2(v′) available and (a) detects the most likely kth position that has been flipped and (b) flips the sign of that kth position in I.sub.C.sub.1(v) before forwarding it to C.sub.2. Similarly, FPE2 takes in I.sub.C.sub.2(v′) and the most recent I.sub.C.sub.1(v) available and (a) detects the most likely kth position that has been flipped and (b) flips the sign of that kth position of I.sub.C.sub.2(v′) before forwarding it to C.sub.1. The identification of the flipped position can also be done in one of the following ways: 1. Pick the kth position that maximizes |I.sub.C.sub.1(v)−I.sub.C.sub.2(v′)|. That means
(52) 2. Pick k according to (1) but only among the I.sub.C.sub.1(v) and I.sub.C.sub.2(v′) values that have opposite signs. In situations where no pair of values of I.sub.C.sub.1(v) and I.sub.C.sub.2(v′) differ in sign, use method 1. 3. Noticing that the values of I.sub.C.sub.1(v) and I.sub.C.sub.2(v′) are different in magnitudes, use scaling before comparing with each other. This can be done by first calculating a new array of I.sub.C.sub.2(v′), I.sub.C.sub.2′(v′), according to
(53) 0 where
(54)
and
(55)
Then use I.sub.C.sub.1(v) and I.sub.C.sub.2′(v′) in determining k either according to method 1 or method 2 described above. Note that I.sub.C.sub.2′(v′) is used only in determining k and not for passing as extrinsic information. 4. Find the flipped position k, using any of the above three methods. Calculate a=|I.sub.C.sub.1(v.sub.k)−I.sub.C.sub.2(v′.sub.k)| and
(56)
Flip the sign of the extrinsic information of the kth position (i.e., I.sub.C.sub.1(v.sub.k) in FPE1 or I.sub.C.sub.2(v′.sub.k) when in FPE2) only if a/b is bigger than some pre-selected value γ. Note that γ indicates how reliable the identified flipped position k, higher the value of γ, more reliable the identification of k is. If not, do not flip the sign of any extrinsic value in that block of n values.
(57) A FPE can be designed in a soft sense by calculating the chance, w.sub.i, that the position i, i=1, 2, . . . , n, is the flipped position. The value of w.sub.1 can be calculated using I.sub.C.sub.1(v.sub.1) and I.sub.C.sub.2(v′.sub.i) as
I.sub.C.sub.2(v′.sub.i)=(1−2w.sub.i)I.sub.C.sub.1(v.sub.i);i=1,2, . . . ,n (3)
(58) Then adjust the extrinsic values using the w.sub.1 values given by (3). Specifically, in FPE1, replace I.sub.C.sub.1(v.sub.i) by (1−2w.sub.i)|.sub.C.sub.1 (v.sub.i), and in FPE2, replace I.sub.C.sub.1(v.sub.i′) by (1−2w.sub.i)|.sub.C.sub.1 (v.sub.i′). Note that when w.sub.i is small the extrinsic information is passed without really changing its value while when w.sub.i is close to 1, the extrinsic information is almost flipped in sign before passing. Scaling can also be used in the soft FPE by using I.sub.C.sub.2′(v′) discussed in method 3 of hard FPE implementation in place of I.sub.C.sub.2(v′) in the calculation of w.sub.i in (3).
(59) A hybrid soft/hard FPE can also be designed by combining the hard FPE design approach 4 discussed above with soft FPE. This can be done by using the above described soft FPE when
(60)
and using the hard FPE when a/b≥γ.
(61) The adjustments made by the FPE can be either assisted or replaced by using an alternate method called progression of likelihood values (PLV). The PLV approach is based on the observation that when the flipped position is correctly identified, that decision should improve the LLR values of the next component whereas if the flipped position is incorrectly identified that should degrade the LLR values of the next component. For example, in FIG. 23, the changes of the extrinsic information made by FPE1 to correct for the flipped bit should improve or degrade the LLR values obtained in C.sub.2 within the corresponding n bit block depending on whether or not the flipped position identified by FPE1 was correct or incorrect respectively. However, in order to determine whether or not the LLR values have improved, it is necessary to determine the LLR values of the next component with and without making any changes in the LLR values obtained from the current component thereby increasing the decoding complexity. If the increase in complexity is disregarded, the PLV method can be used to identify the flipped position and adjust the extrinsic information in place of a FPE. This can be done by calculating the LLR values of the next component (say C.sub.2) without making any adjustment (in FPE1) for the flipped position, and also separately calculating the LLR values of C.sub.2 when the flipped position is varied among each of the n possible positions. Then the flipped position can be identified as the position that improves the LLR of C.sub.2 by the highest amount. However, this approach is not attractive as it requires calculating the LLR values of C.sub.2 separately (n+1) number of times. Therefore, instead of using the PLV method in isolation, it can be combined with the FPE to better estimate the flipped position and update the LLR values before passing it to the next component by using the PLV approach on an as needed basis. Specifically, if the decision made by the FPE appears to be reliable, then accept its decision. However, in situations where the decision made by the FPE does not appear to be reliable, use the PLV method described above either to verify or modify the decision made by the FPE. Therefore, a combined FPE/PLV approach can be developed in the hard sense according to the following rules: Identify the flipped bit position k in the hard FPE. In addition, calculate the average magnitude of the extrinsic information difference of all remaining positions, L.sub.avg(k), and the difference in the extrinsic information of the selected kth position L(k) in the hard FPE. If L(k)≥ρL.sub.avg(k), accept the decision made by the FPF and move to the next component of the iterative decoding process, where, ρ is a pre-selected value to maintain good performance. However, if L(k)<ρL.sub.avg(k), which suggest that the decision made by the FPE is weak, turn to the PLV method by decoding the next component without adjusting the extrinsic information from the previous component. Then find the average of the absolute value of the extrinsic information of the next component, L.sub.avg. Then adjust the extrinsic information of the previous component by assuming the flipped bit is the most likely position k.sub.1 identified by the FPE and calculate the extrinsic information of next component. Then calculate the new average of extrinsic information L.sub.avg(k.sub.1). If L.sub.avg(k.sub.1)>L.sub.avg, assume k.sub.1 was the flipped position and use the corresponding extrinsic information of the next stage. If not, find the extrinsic information of the next component by assuming the next most likely position k.sub.2 is the flipped position and repeat the same process. Continue the same process until L.sub.avg(k.sub.i)>L.sub.avg. At that point, assume the position k.sub.i was flipped position and use the corresponding adjusted extrinsic information of the next stage.
(62) The ITBF technique is similar in principle to the IPT technique described before for the transmission of packets implicitly. However, the main difference between ITBF and IPT techniques is that IPT requires that the implicit stream to be coded and as a result it requires updating soft information of the coded bits of the implicit stream during iterative decoding. Therefore, a mapper and a summing unit was used in the IPT technique. In contrast, the ITBF technique mostly uses an uncoded information sequence as the implicit sequence and it can however use a code separately to improve performance of the implicit stream. Further, unlike IPT, ITBF does not require updating soft information of the implicit bits during iterative decoding. Therefore, the mapper used in IPT is referred to in ITBF as a bit position selector and the summing unit in the IPT is referred to in ITBF as a bit flipping unit. The operations in the bit position selector and the bit flipping unit in a ITBF scheme are simpler than the operations in the mapper and the summing unit in an IPT scheme.
(63) Consider an ITBF embodiment of a turbo product code (TPC) constructed with a (n, k) block code with minimum Hamming distance (MHD) d.sub.min(≥3). In such a TPC, the inner code C.sub.1 and the outer code C.sub.2 are both (n, k) linear block codes. FIG. 6 illustrates the encoding of a n by n code array starting from a k by k message array. Note that the top k by n array is the output of C.sub.1 which is checked both by C.sub.1 and C.sub.2. The above described ITBF technique can be applied to this product code by selecting a bit on the first row according to └ log.sub.2n┘ implicit message bits at the output of C.sub.1 before feeding it to C.sub.2. In order to improve performance it is desirable not to flip more than one bit along the same column. This can be easily maintained by ignoring the column of the bit that has been flipped on the first row and selecting a bit from the remaining (n−1) bits on the second row according to └ log.sub.2 (n−1)┘ and flipping it. This process can be continued down to the kth row to select a bit out of the remaining (n−k+1) columns of the kth row according to └ log.sub.2(n−k+1)┘ implicit bits and flipping it. In the end at the output of C.sub.1, k bits will be selected (one from each row) before encoding the inner code C.sub.2 along columns. As a result, the TPC with ITBF can additionally transmit
(64)
(65) number of message bits implicitly from a separate implicit message sequence. The above TPC with ITBF can be decoded according to the algorithm described before. However, if d.sub.min is significantly higher than 3 and each component code is capable of correcting more than one bit, it is possible to select more than one bit from each row according to implicit bits before feeding the output of C.sub.1 (first k rows of FIG. 24) to C.sub.2 thereby increasing the number of implicitly transmitted bits. Even though selecting bits row by row according to implicit bits is simpler, the number of transmitted implicit bits can be increased by selecting bits jointly by ensuring that only one bit from each of the first k rows are flipped while also maintaining that no column has more than one flipped bit. Specifically, if done jointly, the number of ways to select a combination of k flipped bits while ensuring the above two conditions is N=Π.sub.i=0.sup.k-1(n−i). Therefore, the total number of implicit bits that can be transmitted in a code array is increased from (4) to
N.sub.s=└ log.sub.2N┘.
(66) Consider a second embodiment of a turbo code with the ITBF technique as shown in FIG. 25. A turbo code with two component codes transmits the explicit message bits, m.sub.Ex, parity bits of the first component code, v.sub.1, and the parity bits of the second component code, v.sub.2. Further, the second component code operates on the interleaved sequence of the explicit message sequence, m.sub.Ex,Int. The ITBF technique can be applied to such a turbo code by selecting one bit out of every n bits of the interleaved message bits, m.sub.Ex,Int, according to n.sub.s=└ log.sub.2n┘ message bits of a separate implicit message sequence to form the sequence m′ as shown in FIG. 25. Note that the first component code C.sub.1 operates on the actual extrinsic message sequence m.sub.Ex, while C.sub.2 operates on the message sequence m′ which contains all the flips. Further, the channel information of the message obtained from the received signal corresponds to m.sub.Ex. Therefore, after extracting bit metrics of all bits on m.sub.Ex, v.sub.1 and v.sub.2, the above turbo code with ITBF can be decoded as similarly according to the following steps: 1. Decode C.sub.1 using the bit metrics of m.sub.Ex and bit metrics of v.sub.1 and extract extrinsic information of the message sequence m.sub.Ex 2. Pass the extrinsic information obtained in step 1 to a first FPE, FPE1, to modify that extrinsic information by using the most current extrinsic information obtained from C.sub.2. If no extrinsic information of C.sub.2 is available, bypass the FPE1 and pass the extrinsic information from C.sub.1 found in step 1 to C.sub.2. Use the same FPE1 to modify the bit metrics of the message sequence m.sub.Ex to obtain the bit metrics of m′ corresponding to C.sub.2. If no FPE information is available, use the bit metrics of m.sub.Ex obtained from the channel as the bit metrics of m′. 3. Decode C.sub.2 using the extrinsic information from C.sub.1 and the bit metrics of m′ found in step 2 along with the bit metrics of its parity bit sequence v.sub.2, and extract extrinsic information of m′ 4. Pass the extrinsic information obtained in step 3 to a second FPE, FPE2, to modify that extrinsic information of m′ by using the most current extrinsic information of m.sub.Ex obtained from C.sub.1 in step 1 to obtain the extrinsic information of m.sub.Ex used by C.sub.1. 5. Go back to step 1 for the next iteration to decode C.sub.1 using the extrinsic information found in step 4. Continue the iterations until the required number of iterations are reached or a terminating condition is satisfied.
(67) Consider the ITBF embodiments previously discussed before with TPC codes and turbo codes. Note that in both of those embodiments, part of the parity bits of the code are generated according to the actual message sequence, which is referred to as the explicit message sequence, while the other parity bits are generated according to a modified version of that explicit message sequence. As described before, ITBF schemes modify the explicit message sequence by selecting bits of that explicit message sequence according to a second implicit message sequence and flipping those selected bits to generate a modified version of the explicit message sequence. Therefore, the ITBF technique can be applied to any code to generate some of its parity bits from the explicit message sequence and the remaining part of the parity bits from the modified version of the explicit sequence. Therefore, the ITBF technique can be applied to generate LDPC codes with ITBF as described below.
(68) Consider a third ITBF embodiment with a systematic (N, K) LDPC code that uses an explicit message sequence, m.sub.Ex for transmission. Then generate part of the parity bits, v.sub.1, using m.sub.Ex as shown in FIG. 26. Then modify the sequence m.sub.Ex by selecting one bit out of every n bit block of m.sub.Ex according to n.sub.s=└ log.sub.2n┘ number of bits of a second implicit message sequence m.sub.in, and flipping that selected bit on m.sub.Ex in each block of n bits to form a modified message sequence m′. Then use the modified message sequence m′ to generate the remaining portion of the parity bit sequence, v.sub.2, as shown in FIG. 26. In a LDPC code, the sequences v.sub.1 and v.sub.2 can be selected to roughly obtain about the same number of check nodes for v.sub.1 and v.sub.2 on the Tanner graph of that LDPC code. FIG. 27 shows the set of check nodes, set A, corresponding to the explicit message sequence m.sub.Ex and v.sub.1, and the set of check nodes, set B, corresponding to the modified message sequence m′ and v.sub.2 as shown in FIG. 27. In order to describe the decoding of LDPC codes with ITBF, let us denote the set of variable nodes and the set A of check nodes, corresponding to the sequences m.sub.Ex and v.sub.1, by C.sub.1. Similarly, let us denote the set of variable nodes and the set B of check nodes, corresponding to the sequences m′ and v.sub.2, by C.sub.2 as highlighted in FIG. 27. In fact, C.sub.1 and C.sub.2 can be viewed as two punctured codes generated from the same LDPC code. Further, C.sub.1 and C.sub.2 can be decoded on the same Tanner graph using the same SPA algorithm with the only difference that the corresponding check nodes include only set A for the decoding of C.sub.1 and set B for the decoding of C.sub.2. Note that the bit metrics (channel information) of m.sub.Ex, v.sub.1 and v.sub.2 can be obtained from the received signal. By following the decoding of turbo product codes with ITBF and turbo codes with ITBF, LDPC codes with ITBF can be decoded after extracting bit metrics of all bits on m.sub.Ex, v.sub.1 and v.sub.2, according to the following steps: 1. Decode C.sub.1 using the bit metrics of m.sub.Ex and bit metrics of v.sub.1 and extract extrinsic information of the message sequence m.sub.Ex 2. Pass the extrinsic information obtained in step 1 to a first FPE, FPE1, to modify that extrinsic information by using the most current extrinsic information obtained from C.sub.2. If no extrinsic information of C.sub.2 is available, bypass the FPE1 and pass the extrinsic information from C.sub.1 found in step 1 to C.sub.2. Use the same FPE1 to modify the bit metrics of the message sequence m.sub.Ex to obtain the bit metrics of m′ corresponding to C.sub.2. If no FPE information is available, use the bit metrics of m.sub.Ex obtained from the channel as the bit metrics of m′. 3. Decode C.sub.2 using the extrinsic information from C.sub.1 on step 2 and the bit metrics of m′ found in step 2 along with the bit metrics of its parity bit sequence v.sub.2, and extract extrinsic information of m′ 4. Pass the extrinsic information of m′ obtained in step 3 to a second FPE, FPE2, to modify that extrinsic information of m′ by using the most current extrinsic information of m.sub.Ex obtained from C.sub.1 in step 1 to obtain the extrinsic information of m.sub.Ex used by C.sub.1 5. Go back to step 1 for the next iteration to decode C.sub.1 using the extrinsic information found in step 4. Continue the iterations until the required number of iterations are reached or a terminating condition is satisfied.
(69) Depending on the LDPC code and the desired performance, steps 1 and 3 can employ a single or any desirable pre-selected number of SPA iterations for the decoding of C.sub.1 and C.sub.2 respectively. Further, in order to select the set of parity bits and the corresponding check nodes, a parity bit selection unit can be used in the decoding of LDPC codes with ITBF.
(70) It is also desirable to select each block of n coded bits of the LDPC codes, which is modified by flipping one bit of it, to ensure that flipping of bits will influence as many check nodes as possible. This can be achieved by ensuring, as much as possible, that only one variable node, representing a coded bit, among all variable nodes that feed into each check node is allowed to be flipped. Note that if two variable nodes among those fed into a particular check node are flipped, the check node will not be able to gather any information of the flipped bit. Therefore, it is desirable to select blocks of n coded bits of the explicit stream completely from a set of paths arriving at a complete set of check nodes. In other words, it is desirable to avoid feeding coded bits arriving at a particular check node into different blocks of n bits as much as possible.
(71) Even though the LDPC codes with ITBF has been described with systematic LDPC codes for simplicity, the same technique can be easily applied to non-systematic LDPC codes. Further, even though, the above embodiment has been described with a LDPC code C, the same ITBF technique can be applied to any code C by generating part of its parity bits from the explicit message sequence and the remaining part of its parity bits from a modified version of the explicit message sequence, modified according to a separate implicit message sequence.
(72) The ITBF technique can be applied to a coded modulation system as illustrated in FIG. 28. In such an application the modulator acts as the second component C.sub.2 while C.sub.1 is the code employed in the system. An optional interleaver π can be used in the system. If such an interleaver is used, the soft information can be transferred using an interleaver (or a de-interleaver) in order to feed the soft information in the proper order to every decoding component at the receiver as it is well known in the literature. Therefore, coded modulation schemes with ITBF are described here without an interleaver, but if an interleaver is used it can be easily incorporated in the decoder described later by using an interleaver (or a de-interleaver) in the exchange of extrinsic information. Therefore, a coded modulation system with ITBF alters the coded sequence (output of C.sub.1) by selecting one bit out of every block of n bits based on n.sub.s=└ log.sub.2n┘ implicit bits and flipping that selected bit before feeding it to the modulator. These signals are decoded similar to the decoding of a TPC with ITBF or a turbo code with ITBF. First the LLR values (bit metrics) of each coded bit is extracted as in [Imai] from the demodulator according to the signal constellation. Then follow the five ITBF decoding steps to decode both the explicit and the implicit bit sequences. FIG. 29 shows the decoding procedure of coded modulation with ITBF. The decoding procedure can be described in the following steps: 1. Extract LLR values (bit metrics) of each bit using the received signal and any available extrinsic information [Imai]. In the first iteration, since no extrinsic information is available, extract bit metrics using the received signal. 2. Pass the extrinsic information found in step 1 to a first FPE, FPE1, to modify the extrinsic information obtained in step 1 using the most recent extrinsic information available from C.sub.1. If no extrinsic information from C.sub.1 is available bypass the FPE1 and pass the extrinsic information found in step 1 to C.sub.1. 3. Decode C.sub.1 using the extrinsic information provided to it in step 2 and extract extrinsic information of the output of C.sub.1 4. Pass the extrinsic information found in step 3 to a second FPE, FPE2, to modify it using the extrinsic information found in step 1. 5. Pass the extrinsic information found in step 4 to update the bit metrics on the constellation and go back to step 1 for the next iteration.
(73) The above 5 step iterative decoding algorithm can be directly applied when the outer code C.sub.1 is a simple code. However, when C.sub.1 is a powerful code, such as a turbo product code or a turbo code or a LDPC code, that requires iterative decoding for the decoding of C.sub.1, the above algorithm can be modified to reduce the increase in decoding complexity. This can be done by inserting steps 1, 2, 4 and 5 listed above within the iterations for the decoding of C.sub.1 in step 3. Consider an ITBF embodiment that transmits LDPC coded bits using a higher order signal constellation. In such an application, the transmitter functions the same way as described before by selecting one bit out of every n coded bits of the LDPC coded stream based on n.sub.s=└ log.sub.2n┘ number of implicit bits and flipping it before transmission. At the receiver, usually LDPC codes are decoded by running iterations between the variable nodes and check nodes on the Tanner graph according to the SPA algorithm. Based on the above ITBF decoding algorithm, a LDPC coded modulation scheme with ITBF can be decoded as shown in FIG. 30 according to the following algorithm: 1. Extract bit metrics from the received signal and assign them to the variable nodes disregarding any flipping has taken place. Run the LDPC decoding SPA algorithm for N.sub.1 number iterations, where N.sub.1 is a pre-selected integer. This allows the LDPC code to provide a good estimate of soft values of the message nodes. However, these soft values are degraded due to the flipping compared with the quality of soft values that would be obtained without any flipping. 2. Following N.sub.1 number of the standard SPA decoding iterations, modify the SPA algorithm to include two FPEs, FPE1 and FPE2, and the bit metric updating unit according to [Imai] as shown in FIG. 13.
(74) Note that the bit metrics calculated from the constellation is a reflection of the flipped version of the coded stream which is also the transmitted sequence. However, the variable nodes during the SPA algorithm reflect the output of the LDPC code without any flips. Therefore, the most recent bit metrics calculated from the constellation and the most recent LLR values of the variable nodes can be compared in FPE1 and FPE2 to best identify the flipped positions. Therefore, the output of FPE1 highlighted in FIG. 28 is a reasonable representation of the un-flipped version of the LDPC coded sequence while the output of FPE2 in FIG. 30 is a reasonable representation of the flipped version of the LDPC coded sequence. Upon completing N.sub.1 number of standard LDPC decoding iterations, run a pre-selected N.sub.2 number of iterations using the algorithm shown in FIG. 6 to complete decoding. The values of N.sub.1 and N.sub.2 can be selected to achieve the desired performance and to limit decoding complexity. Depending on the application, once FPE1 provides extrinsic information to the LDPC decoder, if necessary any pre-selected N.sub.3 number of iterations can be run for the SPA decoding algorithm using the same FPE1 output to reasonably well realize the effects of the provided extrinsic information. The values of N.sub.1, N.sub.2 and N.sub.3 can be selected based on the power of the LDPC code, size of the constellation, mapping policy used on the constellation and the signal to noise ratio. There can be applications for which N.sub.1=N.sub.3=1. It is mentioned here that any FPE in a ITBF system can be implemented as a hard FPE (according to any of the four ways discussed before), or a soft FPE, or a soft/hard FPE, or according to the PLV algorithm, or combined FPE/PLV algorithm.
(75) It is noticed that the bit error rate performance of the implicit stream relies on how the mapping is done on the constellation. In order to determine which bit has been flipped in a symbol reliably on the constellation, it is important to increase the Euclidean distance between constellation points that differ in one bit differences. Therefore, mapping policies other than traditional Gray coding can be used in a coded modulation scheme with ITBF. For example, anti-Gray coding or reverse Gray coding (RGC) can provide stronger information about the flipped bit from the constellation compared with Gray coding. However, Gray coding can provide stronger information of the remaining un-flipped bits than the other types of mapping. Therefore, depending on the application, Gray coding or any other type of coding can be used to achieve good performance of ITBF coded modulation scheme.
(76) Another approach for improving the performance of the implicit bit sequence is to employ a separate code on the implicit stream as shown in FIG. 31 instead of using an uncoded implicit message data stream as before. In such a coded system, the soft information of coded implicit bits can be first extracted by using the ITBF iterations as described before and after that perform soft or hard decoding of the implicit code to recover the implicit message data stream to achieve the desired error rate performance. Since the ITBF iterations are likely to provide mostly reliable soft information of coded implicit bits, a high rate code C.sub.Im can be usually used on the implicit stream. Another way to further increase the transmission rate in the scheme shown in FIG. 31 is to use a second uncoded implicit stream, m.sub.Im2, by applying the ITBF technique to the code C.sub.Im. FIG. 32 shows such a structure that employs two implicit streams, m.sub.Im1 and m.sub.Im2. The decoding of such a coded scheme follows directly from the iterative decoding of coded modulation schemes with ITBF described before. The only difference is that the same iterative process is needed twice, first to use the ITBF decoding algorithm shown in FIG. 29 to extract soft information of the first coded implicit stream, then to use the ITBF decoding algorithm shown in FIG. 23 to recover the two implicit message streams. If the code C.sub.1 in FIG. 28, or code C.sub.1 and/or C.sub.Im in FIGS. 31 and 32, is a LDPC code or any other powerful code that requires iterative decoding, the same decoding method described before and shown in FIG. 30 can be used to recover both the explicit message sequence m.sub.Ex and the implicit message sequence m.sub.Im.
(77) Another method to transmit two implicit message sequences, m.sub.Im1 and m.sub.Im2, is to extend the IPT technique described before with one implicit stream to handle two implicit streams. This is done by applying the ITBF technique described before to the coded implicit stream by adding second implicit stream. FIG. 33 shows the structure of a new class of IPT schemes, referred to here as IPT-2 schemes, that can transmit one stream m.sub.Ex explicitly and two streams m.sub.Im1 and m.sub.Im2 implicitly. The first implicit stream is coded while the second implicit stream is uncoded. IPT-2 schemes select one bit out of every n′ bits of the first coded implicit stream, v′.sub.Im, according to n′=└ log.sub.2n′┘ bits of m.sub.Im2 and flip that selected bit in the a bit flipping unit to form the sequence v.sub.Im. Then, as in IPT schemes, one bit out of every n coded bits of the explicit stream, v.sub.Ex, is selected according to n.sub.s=└ log.sub.2n┘ bits of v.sub.Im and flip that bit before forming the transmitted sequence v.sub.t. Note that the processing on the first implicit stream m.sub.Im1 is the same as the structure of an ITBF scheme shown in FIG. 21 with m.sub.Im2 as its implicit stream. At the receiver, IPT iterative decoding structure shown in FIG. 13 can be modified by replacing the decoding of the implicit code C.sub.Im by the ITBF decoding algorithm shown in FIG. 23. After running the modified IPT iterations, all three sequences can be decoded. The explicit message sequence m.sub.Ex and the first implicit message sequence m.sub.Im1 follow directly from the modified IPT iterations, while m.sub.Im2 can be directly recovered from the information of the FPE as it identifies the flipped bit position which uniquely determine n′.sub.s number of bits of m.sub.Im2 for every n′ number of bits identified on v′.sub.Im.
(78) When LDPC codes are used in a IPT shown in FIG. 12 or a IPT-2 scheme as shown in FIG. 33 as the code C.sub.EX on the explicit stream and also code C.sub.Im on the implicit stream, the decoding can be done by inserting the IPT iterations within LDPC decoding iterations. This can be done by running only a preselected N.sub.1 number of LDPC iterations (SPA iterations) in the decoding of C.sub.EX and C.sub.Im in the decoder shown in FIG. 13. The value of N.sub.1 is selected to be sufficient for the LDPC decoder to feel the effect of any changes made during the IPT iterations. Similarly, if LDPC codes are used in a IPT-2 scheme shown in FIG. 33 as the code on the explicit stream and also on the first implicit stream, the decoding can again be done by inserting the modified IPT iterations within LDPC decoding iterations as described before. Again, in the decoding of the explicit and implicit codes, only a small pre-selected N.sub.1 number of SPA decoding iterations can be used within the modified IPTC-2 iterations. For some applications N.sub.1 in a IPT or a IPT-2 can be as small as small as 1 or 2. As a result, the increase in decoding complexity is rather small in a IPT or a IPT-2 when the component codes are LDPC codes.
(79) In ITBF or IPT or IPT-2, a portion of a message stream is transmitted implicitly while transmitting the remaining portion explicitly as a coded stream over a channel. It is noticed that when both implicit and explicit streams are formed from a single message stream, there is no restriction on how the two streams are formed. Therefore, the implicit and explicit streams can be formed from the original message stream in any preferable way. That flexibility available in a ITBF scheme or a IPT scheme or a IPT-2 scheme inherently introduces a second layer of encryption. For example, let us consider a IPT scheme that transmits 25% of a coded stream implicitly when transmitting the remaining 75% of the coded stream explicitly. That means on average one out of every five bits of the original message sequence can be transmitted implicitly while transmitting the remaining four bits explicitly. In this scheme, if there are 5.1 message bits in the original message stream, then there are
(80)
ways to divide it to form the implicit and explicit streams. For higher values of λ, which is usually the case in practice, this number is a very large number. Therefore, if a third party is to somehow receive the transmitted sequence v.sub.t, that third party will not be able to decode the two sequences without knowing how the original message sequence is divided to form the implicit and explicit sequences. Therefore, ITBF, IPT and IPT-2 schemes inherently introduce encryption by the division of the original message sequence to form the implicit and explicit streams. It is also noted here that the original sequence can be already encrypted. In that case, how the original encrypted sequence is divided into explicit and implicit streams introduces an additional second layer of encryption.
(81) Another approach for increasing the information transfer rate is to allow interference during transmission. For example, in an OFDM system if the frequencies are brought closer to each other lowering the standard spacing than 1/T, more frequencies can be placed within a given bandwidth, where 1/T is the symbol rate. However, in such a system, the orthorgonality condition is violated causing interference among frequencies.
(82) Similarly, interference can be present in any domain such as, time domain, spatial domain, or it can be present in presence of mismatches such as I/Q mismatch. Traditional method of signaling is to somehow find ways to avoid interference or to combat it at the receiver using interference cancellation or mismatch cancellation.
(83) In the literature, the BOMA technique has been proposed to transmit a message sequence from a second user when the message from a first user is transmitted on the downlink of a wireless system. BOMA employs a sparse signal constellation which can be derived using the building block principle that has been used in the design of multilevel codes. For example, FIG. 34 shows a 16-ary sparse constellation that can be used to additionally transmit two bits of user 2 while transmitting two bits of user 1. In that example, user 1 is considered to have a weaker channel while user 2 is considered to have a stronger channel. The constellation shown in FIG. 34 is constructed by following the building block approach by (a) constructing a QPSK constellation for the two bits of user 2 with constellation points (±b, ±b), which is referred to as the building block (BB) constellation, and (b) placing four copies of the building block formed in (a) at the QPSK constellation of the two bits of user 1 with constellation points (±a, ±a), which is referred to as a tiling constellation. As a result, the first two bits of the 16-QAM sparse constellation come from user 1 while the last two bits come from user 2. At the receiver, both users can separately extract the respective LLR values of only their own bits from the received signal.
(84) Note that the primary user, user 1, can view user 2 as interference. As a result, the interference of user 2 expands the original QPSK constellation with points (±a, ±a) of user 1 into a 16-ary sparse constellation with the interference. Therefore, any interference results in an expanded signal constellation. More importantly, the BOMA principle allows the extraction of the LLR values of both the information of the desired signal (which is user 1 in the previous example) and the information of the interfering signal (which is user 2 in the previous example) simultaneously. Therefore, the detection used in the BOMA approach, referred to here as BOMA detection, can be extended to multiple interferences by systematically expanding the constellation according the BB methodology, and extracting the LLR values of the desired bits and each interfering bit separately from the same received signal. As a result, the BOMA approach can be used to combat interference in a communication system. Therefore, signals can be transmitted with interference but the likelihood values of different bits can be extracted using the BOMA detection approach. This is in contrast to traditional thinking which tries to avoid interference and to find ways, such as interference cancelation, equalization, etc., to remove interference before detection. This aspect of the present disclosure, referred to as BOMA detection in presence of interference (BDPI), can be used to transmit signals with interference thereby increasing the information transfer rate.
(85) For example, let us consider a transmission scheme that employs BPSK modulation transmitted over a channel that causes inter-symbol interference (ISI) from only the two adjacent symbols. Let us also assume that the channel response is in the form h=(0, 0, . . . , h.sub.−1, h.sub.0, h.sub.1, . . . 0, 0) with h.sub.1=h.sub.−1. Therefore, during every n th interval, the overall constellation with interference from both adjacent symbols can be found by viewing the effect of each interfering signal in the form of a BB. FIG. 35 illustrates how the overall constellation with interference from both adjacent symbols can be found by considering the effect of one symbol at a time. As it can be seen from FIG. 35 the combined BB formed by both adjacent interfering symbols is a 3-ary constellation. Therefore, the overall sparse signal constellation with the interference from both adjacent symbols and the desired signal used by the scheme during every interval is a 6-ary constellation as illustrated in FIG. 35.
(86) The above method can be extended to include ISI from up to N symbols from each side. Noticing that the interference from any ith pair of neighboring symbols on the two sides create a 3-ary BB, BB.sub.i, i=1, 2, . . . N, the effective interference BB, BB.sub.eff,N, from any N pairs of interfering symbols can be found by starting from BB.sub.1 (which is also BB.sub.eff,1) and placing each BB.sub.i at each constellation point of BB.sub.eff,i-1, to form BB.sub.eff,i, for i=2, 3, . . . N.
(87) During decoding, each received signal y.sub.k transmitted during any k th interval, carries (2N+1) LLR contributions for bits transmitted during intervals (k−N), (k−N+1), . . . , (k+N). These contributions, denoted by LLR(k, k−j), j=N, (N−1), . . . , N, can be found by following BOMA decoding approach on the overall signal constellation BB.sub.eff,N. Therefore, upon calculating LLR contributions from each received signal, y.sub.k, −∞<k<∞, each bit will have up to (2N+1) LLR contributions. However, note that when only a finite number of symbols are transmitted, the initial N bits and the final N bits will have fewer LLR contributions. The overall LLR value of each jth bit, L(j) can be calculated by adding all LLR contributions of that bit as
(88)
(89) Upon calculated the bit metrics for each bit in presence of interference, they can be used to decode the message bits if an error correcting code is employed at the transmitter, or use the bit metrics calculated in any known method as directed by the receiver.
(90) As N increases, calculating all (2N+1) LLR contributions from each y.sub.k become challenging. Hence, an algorithm can be developed to efficiently calculate the LLR value of each bit by actively searching for the most significant constellation points for which each bit is a 1 and a 0 separately. If the Max-log-MAP based LLR values are calculated, only the most significant (closest to the received signal y.sub.k) constellation point for 1 and most significant constellation point for 0 are needed. These two constellation points corresponding to each bit can be efficiently searched using the standard search algorithms even though the overall sparse constellation is very large.
(91) As noted above, in another aspect, the present application discloses a technique for using CICM with LDPC codes. Since most current communications systems today employ LDPC codes, it is highly desirable to be able to apply the CICM technique to LDPC codes and as a result to be able to transmit LDPC coded bits using higher order modulation while performing better than if they were to be transmitted using a lower order modulation scheme. In addition, it would be highly desirable for such a LDPC coded scheme with CICM to be able to process one LDPC codeword at a time thereby eliminating any increase in decoding delay and memory. If CICM can be applied to a single codeword of a LDPC code, its coded bits could potentially be transmitted using 16-QAM or even 64-QAM modulation while performing better or similar to employing QPSK modulation for transmission. As a result, application of CICM to LDPC codes can potentially more than double the transmission rate. In accordance with this aspect of the present application, a simple method of applying CICM to LDPC codes is presented while decoding one codeword of the LDPC code at a time.
(92) A LDPC code can be viewed as a long code that has a collection of a many single parity check (SPC) codes. Each parity check is formed by a few variable nodes (represented by coded bits) and one check node, where, each check node receives information from several other variable nodes. Effectively, each row of the parity check matrix H of a LDPC code corresponds to a SPC code of that LDPC code. As a result, a LDPC code inherently contains a large number of short SPC codes in it. Since the CICM technique requires consideration of a large number of codewords, these short SPC codes can be used as the required codewords in the application of CICM. As a result, CICM can be applied to a single codeword of the LDPC code without having to consider multiple codewords of it.
(93) In order to describe how the CICM technique can be applied to LDPC codes, let us consider a general LDPC code with n variable nodes (VNs), denoted by v_i=1, 2, . . . , n, and L check nodes (CNs), denoted by c_j, j=1, 2, . . . , L. Let us denote the set of ki connections stemming from any general VN vi to its associated CNs, denoted by c_j_1(i), c_j_3(i), . . . ,c_j_k_i(i). Similarly, let us denote the set of el_j connections stemming from any general check node c_j to its associated VNs denoted by v_i_1(j), v_i_2(j), . . . ,v_i_el_j(j).
(94) As with block codes, it is assumed in the application of CICM to LDPC codes that errors would be limited to only a small number of coded bits as SNR increases. Specifically, it is assumed that the errors are limited to a set of variable nodes formed by starting from any single variable node vi and (a) following all paths that emerge from vi to the check nodes, and (b) then considering each of those check nodes back to a set of variable nodes. This set of variable nodes formed by the above steps (a) and (b) including vi, denoted by S_i, is the set of variable nodes referred to as the associated variable nodes (AVN) of the variable node vi. Therefore, in the application of CICM to LDPC codes, it is assumed that errors that occur are limited to a single Si as SNR increase. Following the above method, it is possible to obtain the corresponding set of AVN for each variable node vi, i=1, 2, . . . , n. The set of AVNs, S_i=1, 2, . . . , n, are used to design the required CICM Interleaver. The goal of the CICM Interleaver is to place each coded bit of every AVN in different transmitted symbols of the 2{circumflex over ( )}m-ary constellation used for transmission. First notice that in order to transmit n coded bits using a 2{circumflex over ( )}m-ary constellation, it is necessary to use W=n/m symbols. Therefore, the aim of the CICM Interleaver in LDPC codes is to place the coded bits (variable nodes) in a m by W 2-dimensional array, called the symbol array (SA), with m rows and W columns with the aim of forming m-bit long symbols along columns to form W symbols for transmission. The objective of this CICM Interleaver is to satisfy the following condition: no two coded bits of every Si, i=1, 2 . . . , n, are placed in the same column of the SA.
(95) However, in situations where it is impossible to satisfy the above condition, the Interleaver can be preferably designed to maintain that the coded bits of each Si are placed in as many columns as possible in the SA.
(96) There can be many valid SAs that satisfy the above condition for all Sis, i=1, 2 . . . , n. In the design of the SA, the goal is to find one such valid SA that satisfies the above condition. Many search algorithms can be developed to search for a valid SA starting from the set of Sis of a given LDPC code with n coded bits and a given value of m. One such strategy would be to place coded bits in the SA with the aim of maintaining the number of unplaced coded bits of each Si about the same for all Sis while placing bits in the SA. This strategy allows more flexibility towards the end to fill out the remaining openings of the SA without violating the above condition. Whenever, bits are selected from each Si, they can be selected either randomly or in some systematic manner such as from left to right or from right to left. In failing to find a valid SA, the process can be repeated until a valid SA (or the best possible SA) is found. An alternate strategy would be to place one Si at a time in the SA. This can be preferably done starting with the Si that has the largest number of coded bits and moving down to the Si with the lowest number of coded bits. The hope in this approach is to have all remaining places of SA in the end to fit into all remaining shorter Sis without violating the above stated condition. Again, coded bits of each Si can be either randomly selected or systematically selected, and further, the search can be repeated until a valid SA that satisfies the above stated condition.
(97) Another approach is to design the CICM Interleaver by following the method for block codes. In this approach, Sis are treated as separate codewords. However, an adjustment is necessary since the same coded bit can appear in many Sis whereas in case block codes all coded bits are separate. This can be overcome by removing all remaining (disregarding) appearances of the same coded bit from other Sis once that coded bit is placed in SA.
(98) It is noted here that the Interleaver design is done once prior to transmission and hence time and effort in searching for a valid SA does not contribute to the decoding delay or decoding complexity. The generated symbols from the SA are then transmitted using a signal constellation that employs RGC.
(99) As noted above, in yet another aspect, the present application discloses a technique for decoding LDPC codes with CICM. In general, CICM decoding requires iterative decoding while involving the constellation during decoding iterations. Since LDPC decoding already uses iterative decoding, the same LDPC iterations can be used to include the constellation. However, the decoder needs to use the same CICM Interleaver used at the transmitter when transferring information from the variable nodes to the constellation and the corresponding de-Interleaver when transferring information from the constellation back to the variable nodes. Checking with the constellation could be done every iteration or every N′th iteration (N′>1) depending on the situation. For example, if N=20 LDPC iterations are used, the constellation could be included after every N′=5 iterations.
(100) It should also be understood that the various different communication techniques disclosed herein, including but not limited to the SPT techniques, the IPT techniques, and the CICM techniques, could be utilized together in any of various manners.
(101) Example embodiments of the disclosed innovations have been described above. Those skilled in the art will understand, however, that changes and modifications may be made to the embodiments described without departing from the true scope and sprit of the present invention, which will be defined by claims.