EP1514358A1 - Method and apparatus for puncturing with unequal error protection in a wireless communication system - Google Patents

Method and apparatus for puncturing with unequal error protection in a wireless communication system

Info

Publication number
EP1514358A1
EP1514358A1 EP03732796A EP03732796A EP1514358A1 EP 1514358 A1 EP1514358 A1 EP 1514358A1 EP 03732796 A EP03732796 A EP 03732796A EP 03732796 A EP03732796 A EP 03732796A EP 1514358 A1 EP1514358 A1 EP 1514358A1
Authority
EP
European Patent Office
Prior art keywords
bits
class
puncturing
protection
puncture
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP03732796A
Other languages
German (de)
French (fr)
Other versions
EP1514358A4 (en
Inventor
Hannu Mikkola
Janne Vainio
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Oyj
Original Assignee
Nokia Oyj
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Oyj filed Critical Nokia Oyj
Publication of EP1514358A1 publication Critical patent/EP1514358A1/en
Publication of EP1514358A4 publication Critical patent/EP1514358A4/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/005Correction of errors induced by the transmission channel, if related to the coding algorithm

Definitions

  • the present invention pertains to the field of encoding data bits for communication between codecs in a wireless communication system. More particularly, the present invention pertains to puncturing a bit stream having error correction bits, so as to eliminate enough bits in the bit stream to match the rate of bits coming from the bit stream to the rate at which the bits are transmitted by the wireless communication system.
  • channel coding for speech parameters is performed based usually on convolutional codes designed so that encoders will generate an integer number of coded bits for each input source bit (as opposed to e.g. three coded bits for every two input source bits) . Because of the bits added by the coder to provide redundancy to the bit stream, sometimes some of the encoded bits must be deleted before transmission (i.e. punctured) in order to match the rate of bits coming from the bit stream to the rate at which bits are transmitted.
  • Fig. 6 illustrates some of the principal components of a wireless communication system including a codec (encoder/ decoder) using convolutional encoding.
  • input bits are encoded by a (channel) encoder 10 including, in order, a convolutional encoder module 10a, a puncturing module 10b, and a serial to parallel conversion followed by an interleaving module 10c.
  • the input bits are typically already source encoded to remove unnecessary redundancy before arriving at the encoder 10.
  • the symbols are each used (in turn) to modulate a waveform in a modulator 12, and the modulated waveforms are then communicated to a de-modulator 14 on the receiver side via a transmission channel (here including the actual transmitter and receiver equipment) .
  • a channel decoder 11 including, in order, a module lie for de-interleaving and converting symbols to bits, a module lib for inserting punctured bits, i.e.
  • a convolutional decoder 11a examines the received symbols and provides a corresponding output bit stream, possibly removing some errors in transmission thanks to the forward error correction capacity of the communication system provided by the convolutional encoder 11a and corresponding decoder 11a.
  • UEP is made possible by dividing a speech encoded frame into sub-sequences and by coding them with separate Equal Error Protection (EEP) channel codecs (3GPP TS 25.212) so as to create different sub-sequences having different error protection, with the result that the encoded frame has a rough, stepwise kind of unequal error protection.
  • EEP Equal Error Protection
  • the (older) GSM Global System for Mobile Communications
  • GSM Global System for Mobile Communications
  • TCH/FS dedicated channels for speech transmission
  • TCH/HS dedicated channels for speech transmission
  • TCH/EFS dedicated channels for speech transmission
  • TCH/AFS dedicated channels for speech transmission
  • TCH/AHS dedicated channels for speech transmission
  • O-TCH/AHS dedicated channels for speech transmission
  • the latest channel codecs of GSM have a puncturing system that finds the most optimal error protection for each speech encoded bit, thus maximizing the overall speech quality in the transmission.
  • Fig. 1 gives an example of bit error rate (BER) distribution for bits in a frame of speech data after encoding by a channel encoder highly optimized for speech transmission and then decoded.
  • bit error rate (BER) distribution for bits in a frame of speech data after encoding by a channel encoder highly optimized for speech transmission and then decoded.
  • Two different bit position classes are shown: class C A includes bit positions from 1 to 64 where the most important bits (bits that are the most critical to subjective speech quality) are conveyed, and also includes bit positions from 65 to 70 where cyclic redundancy check (CRC) bits are inserted into the encoded bit stream for detecting errors in transmission of the data bits of class C A ; and class C B includes bit positions from 71 to 177 where the remaining speech encoded bits are carried, those not as critical to subjective speech quality.
  • CRC cyclic redundancy check
  • the BER curve for the class C A bits is quite flat (nearly the same for all bits) and of low amplitude, both for the data bits of class C A (highly important to speech quality) and for the CRC bits in class C A .
  • the channel codec is designed to provide such a flat, low- amplitude bit error rate for class C A bit positions because all bits in a frame are usually either kept or discarded depending on the check provided by the CRC bits (i.e. so that an entire whole frame is discarded if any one of the bits belonging to class C A for the frame is in error) .
  • the overall frame error rate (FER) is minimized when the BER within class C A bits is flat and small.
  • a decoder will typically not reject an entire frame of bits with bit errors in bits in other than class C A , bits which are typically increasingly less important to speech quality (i.e. the bits in the higher bit positions are less important than the bits in the lower bit positions) , and so for optimal error protection for such bits, the protection capability decreases as the bit position increases (i.e. as the subjective importance of the source bits decreases) .
  • the code rate R is in general written as k/n indicating that the encoder maps a k-tuple to an n-tuple. It is possible to more concisely describe an encoder than by providing a connection diagram.
  • a (generator) polynomial produces only one bit at a time, but for an entire frame's worth of bits, each polynomial contributes a bit multiple times, the same number of times for each polynomial. If all input bits to a polynomial have the same importance, then all output bits of the polynomial also have the same importance. Different polynomials have different importance, i.e. all the polynomial do not make an equal contribution to error protection performance of the convolutional code. Some applications, like speech codecs, provide source bits for the convolutional encoder, but all the bits do not have equal subjective importance and thus the output bits from the convolutional encoder do not have equal importance (even if the generator polynomials would have equal contribution to error protection performance) .
  • the puncturing can be performed on the basis of the different importance of different bits and also on the basis of the different importance of different polynomials associated with the convolutional encoder.
  • puncturing can be performed on a bit-by-bit basis and also on a polynomial -by- polynomial basis.
  • the modulation technique used- -e.g. 8 phase shift keying (PSK) modulation--is another factor in the design of optimal puncturing for convolutional codes for speech traffic channels, especially when multiple bits are transmitted as a single symbol (e.g. in 8 -PSK modulation, 3 -bits are conveyed per symbol) .
  • PSK phase shift keying
  • some of the bits in the transmitted symbols may have higher error probability than others.
  • Modulation in such systems causes a phenomenon that is sometimes called "soft puncturing" (of the bits that have the weaker protection) because the modulation technique weakens the error protection just as (hard or real) puncturing does, where bits are actually removed from the bit stream.
  • soft puncturing is the act of assigning a bit to a position in a bit stream so that when it is converted to a symbol it is in a position having weaker protection.
  • GSM systems use hand-optimized puncturing tables which provide UEP with flat protection for the most important bits and smoothly decreasing protection performance as a function of decreasing bit importance for all other bits.
  • existing GSM systems use a dedicated transport channel for speech data optimized by exhaustive objective and subjective speech quality evaluation. If the number of different supported speech codecs is increased to provide UEP, the implementation complexity of the entire channel codec increases as does the complexity of the implementation testing.
  • AMR Adaptive Multi Rate
  • AMR-WB Adaptive Multi Rate - Wide Band
  • channel modes are: GMSK (Gaussian Medium Shift Keying) full rate, GMSK half-rate, 8-PSK full rate, 8-PSK half rate.
  • GMSK Gausian Medium Shift Keying
  • TCH/FS TCH/HS, TCH/EFS, TCH/AFS 12.2, TCH/AFS 10.2, TCH/AFS 7.95, TCH/AFS 7.4, TCH/AFS 6.7, TCH/AFS 5.9, TCH/AFS 5.15, TCH/AFS 4.75, TCH/AHS 7.95, TCH/AHS 7.4, TCH/AHS 6.7, TCH/AHS 5.9, TCH/AHS 5.15, TCH/AHS 4.75, O- TCH/AFS 12.2, 0-TCH/AFS 10.2, O-TCH/AFS 7.95, O-TCH/AFS 7.4, 0-TCH/AFS 6.7, O-TCH/AFS 5.9, O-TCH/AFS 5.15, O-TCH/AFS
  • a method for channel encoding and decoding data bits for transmission via a wireless communication channel a frame at a time, each frame consisting of a predetermined number of the data bits, each of the data bits predetermined to belong to one or another of a plurality of ordered predetermined different protection classes including a first class C A and one or more other classes C B , ..., C_ including a last class C ⁇ as , the different protection classes having predetermined different desired levels of error protection, the first class C A having the strongest predetermined desired level of error protection, the method characterized by puncturing steps including: a step of determining how many bits to puncture in each protection class so as to achieve either the predetermined desired level of error protection for the protection class or a different desired level of error protection arrived at by iteration to avoid determining a negative value of bits to puncture from any class; and a step of identifying which bits to puncture for each class so as to provide relatively strong and uniform protection for all bits in the first class C A ,
  • each class C A C B , ..., C z may include bits provided by one or more respective generator polynomials each of which provides bits of possibly different importance in respect to error protection and so each of the generator polynomials for the class may be more or less important than others of the generator polynomials of the class, and in the step of identifying which bits to puncture for each class, at least some bits originating from the less important generator polynomials may be selected for puncturing out before bits originating from the more important generator polynomials.
  • the method may be further characterized by: a step of resizing the predetermined first two classes so as to enlarge the first class by a number of bits approximately equal to 10% of the size of the first class, and to decrease the second class by the same number of bits.
  • the method may be further characterized by: a step of determining how many weak bits to allocate to each class C A , C B , •• ⁇ / C z so as to maintain the predetermined desired level of error protection; and a step of identifying which weak bits to allocate to each class C A , C B/ .... C z so as to provide relatively strong and uniform protection for all bits in the first class C A , and so as to provide for each other class C B , ..., C z protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class.
  • the method may be further characterized by: a step of either constructing a puncturing table and performing the puncturing using the puncturing table, or performing the puncturing without using a puncturing table.
  • the method may also comprise inverse puncturing steps, responsive to information indicating which bits to puncture and in what order.
  • an apparatus for channel encoding a data bits for transmission via a wireless communication channel a frame at a time, each frame consisting of a predetermined number of the data bits, each of the data bits predetermined to belong to one or another of a plurality of ordered predetermined different protection classes including a first class C A and one or more other classes C B , ..., C z including a last class C ⁇ ast the different protection classes having predetermined different desired levels of error protection, the first class C A having the strongest predetermined desired level of error protection, the apparatus characterized by: means for determining how many bits to puncture in each protection class so as to achieve either the predetermined desired level of error protection for the protection class or a different desired level of error protection arrived at by iteration to avoid determining a negative value of bits to puncture from any class; and means for identifying which bits to puncture for each class so as to provide relatively strong and uniform protection for all bits in the first class C A , and so as to provide for each other class C B ,
  • each class C A , C B , ..., C z may include bits provided by one or more respective generator polynomials each of which provides bits of possibly different importance in respect to error protection and so each of the generator polynomials for the class may be more or less important than others of the generator polynomials of the class, and in identifying which bits to puncture for each class, at least some bits originating from the less important generator polynomials may be selected for puncturing out before bits originating from the more important generator polynomials.
  • the apparatus may be further characterized by: means for resizing the predetermined first two classes so as to enlarge the first class by a number of bits approximately equal to 10% of the size of the first class, and to decrease the second class by the same number of bits.
  • the apparatus may be further characterized by: means for determining how many weak bits to allocate to each class C A , C B , ..., C 2 so as to maintain the predetermined desired level of error protection; and means for identifying which weak bits to allocate to each class C A , C B , .../ C z so as to provide relatively strong and uniform protection for all bits in the first class C A , and so as to provide for each other class C B/ ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class.
  • the apparatus may be further characterized by means for either constructing a puncturing table and performing the puncturing using the puncturing table, or for performing the puncturing without using a puncturing table.
  • the apparatus may also comprise inverse puncturing means, responsive to information indicating which bits to puncture and in what order .
  • a system comprising a plurality of wireless terminals and a base station, at least one of the wireless terminals and the base station each including: a channel encoder, responsive to input bits, for providing transmitter side symbol waveforms, characterized in that it includes an apparatus as in the first aspect of the invention; and a channel decoder, responsive to the transmitter side symbol waveforms as modified by a communication channel, including means for performing steps undoing any puncturing performed on bits conveyed by the transmitter side symbol waveforms.
  • the invention thus provides for a convolutional codec a generalized puncturing algorithm that combines the benefits of manually optimized puncturing tables (optimal performance) as in GSM channel codecs and generic puncturing algorithms (lower complexity and simpler implementation testing) as in 3G channel codecs, by providing a procedure to generate puncturing tables for each application (codec/ codec mode) without the need for separate puncturing tables for each application.
  • generalized puncturing algorithms usually perform less well than manually optimized puncturing schemes, the generalized puncturing algorithm of the invention makes the difference marginal.
  • Fig. 1 is a graph of bit error rate in a highly optimized channel codec for speech transmission according to the prior art (optimized by use of manually tuned puncturing tables) .
  • Fig. 2 is a graph of bit error rate in a channel codec using a generalized puncturing algorithm according to the invention.
  • Fig. 3 is a graph of a comparison of the bit error rates graphed in Figs. 1 and 2, the solid line for a manually optimized channel codec and the dashed line for a channel codec using the generalized algorithm according to the invention.
  • Figs. 4A and 4B are schematic illustrations of puncturing for a first (most important) class of bits according to a prior art system (such as e.g. a 3G rate matching system) and according to the invention, respectively.
  • Figs. 5A-C are in combination a high level functional diagram of a method provided by the invention.
  • Fig. 6 is a context diagram of a communication system of a type in which the invention can be used, including an encoder performing convolutional encoding and also performing puncturing (which can be done according either to the invention or to the prior art) .
  • Fig. 7 is a schematic illustration of an implementation of an exemplary (prior art ) convolutional encoder .
  • the invention provides a generalized puncturing algorithm incorporating techniques used in manual tuning of puncturing tables for use with convolutional coding, and, in addition, for accounting for soft puncturing by multi -bit/symbol modulation systems (such as an 8PSK modulation system) in which some bits (called weak bits) are transmitted as part of a symbol with less protection than other bits (called strong bits) of the symbol.
  • multi -bit/symbol modulation systems such as an 8PSK modulation system
  • Puncturing and the allocation of weak bits in systems transmitting multiple bits per symbol are by far the most challenging aspects of the operation of a channel codec to automate.
  • a channel codec When automated, as explained below, only one module remains needing a large predefined data table for providing unequal error protection (UEP) , a subjective importance ordering module, which executes before channel coding. Subjective importance ordering depends on the speech codec itself, not on the communication channel, and cannot be automated.
  • the generalized puncturing algorithm of the invention assigns bits (data bits and redundancy bits) of a frame to one of two classes.
  • First class C A includes bit positions from 1 to 64 where the most important bits (bits that are the most critical to subjective speech quality) are conveyed; class C A also includes bit positions from 65 to 70 where cyclic redundancy check (CRC) bits are inserted into the encoded bit stream for detecting errors in transmission of the data bits of class C A .
  • Second class C B includes bit positions from 71 to 177 where the remaining speech encoded bits are carried, those not as critical to subjective speech quality. Figs.
  • FIG. 5A-C in combination illustrate a generalized puncturing algorithm according to the invention
  • Fig. 6 shows a communication system including a convolution coder 10a and a puncturing module 10b implementing the generalized puncturing algorithm of the invention.
  • the steps (at a high-level) of the generalized puncturing algorithm provided by the invention are indicated as belonging to one or another of three stages 51 52 53.
  • the algorithm calculates how many bits are to be punctured out of each of the two protection classes C A and C B (more than two protection classes are also possible) so as to achieve a predetermined desired (usually different) level of error protection for each class, and also calculates how many weak bits (if any, depending on the modulation being used) are to be allocated to each class to maintain the predetermined desired levels of error protection.
  • the algorithm iterates to determine which bits in particular (i.e.
  • the algorithm either constructs a puncturing table (i.e. a puncturing matrix) or performs the puncturing "on the fly" (i.e. without using a table) , depending on which alternative is preferred.
  • One important feature of the invented algorithm is that once the protection classes (each an ordered set of bits) are defined, i.e. once bits in position 1 through some position number Ni are assigned to the first class C A , and so on, according to the prior art (3GPP TS45.003), the algorithm automatically increases the size of the first class C A by some factor D, typically around 10% and, correspondingly, reduces the size of the second class. This is done because the algorithm does not provide a flat error protection curve for all of the first class, but instead provides somewhat lower protection for the bits at the end of the ordered set of the first class bits.
  • the D factor can be adaptive, i.e., the bigger the difference between the protection of two consecutive classes, the bigger the increase used to compensate for the weakened protection following the most important bits.
  • the classes are input in terms of the numbers N or;gC an & N origC _ for each of the two protection classes C A and C B so that the bits in class C A are the bits in positions 1 through N or , gC and the bits in class C B are the bits in positions N origC +1 through N origCA + N origCe .
  • the total number of bits in a frame is thus N origC ⁇ + N origCs .
  • N CA N origCA +[D N orisC ( 1 )
  • N cB N origCB - lD N origC (2 ) (in which indicates the integer part of x , i.e. the integer closest to but not greater than x ) so that N c and N are the number of bits in class C A and class C B respectively after resizing (the total number of bits being unchanged) , and D (input or embedded in the algorithm) corresponds to the size of the transition region between class C A and C B expressed as a fraction of C A , typically on the order of 10%.
  • a first class C A and a second class C B two classes being a typical case for channel coding for speech parameters
  • the desired level of error protection capability for each class is input as a ratio R, (i.e. R A or R B ) for each class Ci (i.e. C A or C B ) , where
  • N punclC is the number of bits to be punctured from class
  • Ci and R is the coding rate of the convolutional code.
  • the ratio M AB of the error protection capability of the class CA to that of class CB is thus:
  • a negative value for class C A means that even if we do not puncture the class C A at all, we cannot achieve the required protection difference between the two classes.
  • a negative value for class C B means that the number of punctured bits needed to achieve the desired protection difference is more than the total number of bits required to be punctured to fit the coded stream into the channel, i.e. for rate matching.
  • the former error condition (negative C A value) may happen quite often, but the latter case (negative C B value) is more rare because we usually assume that the ratio M AB is less than one, meaning that puncturing should be less in class C A .
  • the algorithm determines the number of bits in each class to puncture to achieve the input value of protection R ; (preferably relative to the value of protection in some other class or other classes) , but in case of either a negative N punclC or N punctCg value, the algorithm iterates using different values of M AB (higher or lower depending on whether N punctCA or N pu ⁇ clC ⁇ is negative) to find the closest ratio to the original ratio resulting in non-negative values for both N pmelCA and N pmaCa .
  • M AB is initially set to 0.85 and it results in a negative value for N punct c > tne algorithm increases the desired ratio M AB by a small amount (such as 0.1 or about 10% of the original value) and again solves for N pmctC ⁇ and N punclC ..
  • the transmission modulation being used is a multiple bit per symbol scheme and has a higher bit error rate for some bits of a symbol than for others, i.e. there are weak bits as a result of the modulation being used (as is the case e.g.
  • the algorithm determines the number of weak bits of a frame to allocate to each of the two classes so as to maintain the value of M AB given by eq. (3.2) .
  • the procedure for the allocation is as follows. First, the algorithm substitutes into eq.
  • step 51d the algorithm expresses the number N softCB of weak bits in class C B in terms of the number N softC of weak bits in class C A , knowing the total number N ⁇ of soft bits:
  • both the required numbers of bits to be punctured in each class and also the required allocation of weak bits among both classes is determined.
  • the procedure of the second stage is repeated for each class separately.
  • the amount of puncturing needed is greater than the number of bits originating from any single generator polynomial.
  • first all the bits from the least important polynomial are punctured, then all the bits from the next least important polynomial, and so on until finally the bits that remain to be punctured are less in number than all the bits of the next least important polynomial and so to puncture the remaining bits, only some of the bits of that polynomial are punctured.
  • the polynomial for which only some bits are punctures is here called the underpuncture polynomial .
  • the algorithm must determine the number N deletedPolynomi ⁇ hC ⁇ of polynomials to delete and also the number N punctInUnderpuncturePolyInC ⁇ of bits to be deleted from the underpuncture polynomial in class Ci, and does so using the following two equations:
  • N punctC is the (previously determined) total number of bits to be punctured from class Ci
  • N bitsPerPolynomi ⁇ l is the (known) number of bits per polynomial ( same for all polynomials , regardless of class)
  • N deIeledPolynomi ⁇ lsInCj is the (to be determined) number of polynomials in class Ci to delete
  • N punctlnUnderpuncturePolyInCi is the
  • the algorithm first determines for a given class how many and which polynomials are to be entirely punctured (deleted) using eq. (7.2), and then does so.
  • step 52a for the class Ci all that must be done in the second stage is to determine which bits are to be punctured from the underpuncture polynomial and to determine how to account for the weak bits in case of a modulation scheme providing weak bits, i.e. determine what soft puncturing to perform.
  • next step 52c we preferably define two puncturing step sizes for the underpuncture polynomial, and also define special puncturing for the beginning of the class, and in a next step 52d, we define the dithering to be used, i.e. whether or not to alternate the two puncturing step sizes.
  • step 52c The defining of the step sizes (step 52c) and defining the dithering (step 52d) is done to puncture the bits (of the underpuncture polynomial) from the first class as evenly as possible.
  • step 52c The defining of special (heavier) puncturing (step 52c) for the beginning of the first class is done to get flat error protection capability for the class; it is necessary to account for the fact that the beginning (as well as the end) of a convolutional code always has better error protection than the rest of the code, i.e. the bits in the end of the class C B have lower BER than the bits just before them. This is because convolutional coding starts from a known state and ends in a known state, which reduces the number of possible states in the coding trellis leading from the beginning and to the end states.
  • the algorithm also performs a step 52e of allocating bits in the class at hand so as to be transmitted with lower error protection, i.e. a step of allocating weak bits. If weak bits exist because of the modulation scheme being used, the weak bits are evenly distributed among the bits originating from the underpuncture polynomial. If all the remaining bits from the underpuncture polynomial are allocated for the weak bits and there are still weak bits to allocate, the remaining weak bits are evenly allocated to the bits originating from the next least important polynomial, and so on. (By allocating weak bits in a class, we mean re-ordering the bits in the class so that after modulation, the weak bits are evenly distributed. )
  • step sizes based on the two closest integers (i.e. 4 and 5) but use them without dithering (i.e. we use steps of 5, 5, 5, ..., 4, 4, 4, ..., 4) .
  • the convolutional code has error protection that decreases significantly at the end of the class.
  • the algorithm also performs the step 52e of allocating bits so as to be transmitted with lower error protection.
  • the decoder 11, and more specifically the inverse puncturing module 11a must receive not only the bit stream to prepare for the convolutional decoder (by inserting zeroes for the punctured bits and for reordering the bits to undo the weak bit allocations) but also sufficient information to determine how to perform its functions, i.e. sufficient information to determine the dithering and weak bit allocations made by the (receiver side) puncturing module 10b.
  • the dithering and weak bit allocations can be hardwired, and in other cases, they can be dynamic.
  • the information needed by the inverse puncturing module is preferably communicated using a different channel than is used for the data.
  • a communication system using the invention preferably includes components as shown and as ordered in Fig. 6, with the serial to parallel (bit to symbol) conversion being performed prior to the interleaving. It is possible however to perform the interleaving before the serial to parallel conversion, but then the puncturing module must take into account the pattern that is to be used in the interleaving operation so as to be able to properly allocate the so-called weak bits among the different protection classes.
  • One way to take into account the interleaving operation is to have the puncturing module 10b (which also makes the weak bit allocations) perform the inverse interleaving operation, make the weak bit allocations, and then perform the interleaving operation, which is then performed one more time by the module 10c performing first the interleaving and then the serial to parallel bit conversion.
  • Fig. 1 An example of where the use of manually optimized puncturing tables (Fig. 1) is replaced by the generalized puncturing algorithm according to the invention is illustrated in the Fig. 2, showing that the difference between the methods can be very small.
  • Class C A IS here indicated as la and class C B as lb */
  • nSoftPuncture nSoftPuncture - cSoftPuncture
  • This subroutine defines the dithering tables for alternating the puncturing steps */ /* and so evening out the error protection properties of the code */ int d ⁇ ther2Steps (int pSteps [], int nSteps, int nBaseL, int nBaseH, int pBaseStepL, int pBaseStepH)
  • nL nBaseH/nBaseL
  • the main puncturing routine which calls d ⁇ ther2steps () and punctureStepByStep 0 */ /* functions */ void FLOCpuncture (Wordl ⁇ * ⁇ n, Wordl6 *out, Wordl ⁇ BitsPunctured, Wordl ⁇ BitsConvEncoded,
  • Wordl ⁇ rate Wordl ⁇ nClassla, Wordl ⁇ nClasslb, Wordl ⁇ nCRC, Wordl6 nTail,
  • nlaAndCRC nClassla + nCRC
  • nlbAndTail nClasslb + nTail
  • nHead nTail - 2
  • nDelPolH rate/2 1
  • tmp nPunctH/nHead
  • nDelPolH tmp
  • nPunctH nPunctH - tmp * nHead
  • nPunctla nPunctla - nPunctH - nDelPolH * nHead
  • nlaAndCRC nlaAndCRC - nHead
  • nlaAndCRC nlaAndCRC - nHead
  • nlaAndCRC nlaAndCRC - nHead
  • nSoftBitsla - nSoftBitsla - nSoftBitsH */
  • nDelPolla 0
  • nStepla 0
  • tmp nPunctla/nlaAndCRC
  • nDelPolla tmp
  • nPunctla nPunctla tmp * nlaAndCRC
  • nStepla d ⁇ ther2Steps (pSteps, nStepla, nBaseL, nBaseH, pBaseStepL, pBaseStepH), ⁇

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)

Abstract

A method and corresponding codec for (channel) encoding speech or other data bits for transmission via a wireless communication channel, the method providing unequal error protection (UEP) using only a single encoder, and including: a step (51e) of determining how many bits to puncture in each of typically two protection classes (C<A#191 C?B#191) so as to achieve either a predetermined or iterated desired level of error protection; and a step (52) of identifying which bits to puncture for each class so as to provide relatively strong and uniform protection for all bits in the first class (C?A#191), but protection that decreases in the same manner as the subjective importance decreases from the beginning to the end of the other classes. The method also accounts for so-called soft puncturing by modulators transmitting multiple bits per symbol with weaker protection for some of the bits of each symbol.

Description

METHOD AND APPARATUS FOR PUNCTURING WITH UNEQUAL ERROR PROTECTION IN A WIRELESS COMMUNICATION SYSTEM
CROSS REFERENCE TO RELATED APPLICATION
Reference is made to and priority claimed from U.S. provisional application Ser. No. 60/390,257, filed June 18, 2002, and entitled ADAPTIVE PUNCTURING ALGORITHM UTILIZING UNEQUAL ERROR PROTECTION SCHEME.
The present invention is related to the following co-pending and co-owned U.S. application:
Ser. No. 10/040,885, entitled "METHOD AND SYSTEM FOR ALLOCATING CONVOLUTIONAL ENCODED BITS INTO SYMBOLS BEFORE MODULATION FOR WIRELESS COMMUNICATION," and filed on Jan. 2, 2002.
The subject matter of the related application is hereby incorporated by reference in its entirety.
TECHNICAL FIELD
The present invention pertains to the field of encoding data bits for communication between codecs in a wireless communication system. More particularly, the present invention pertains to puncturing a bit stream having error correction bits, so as to eliminate enough bits in the bit stream to match the rate of bits coming from the bit stream to the rate at which the bits are transmitted by the wireless communication system.
BACKGROUND ART
In modern cellular systems channel coding for speech parameters is performed based usually on convolutional codes designed so that encoders will generate an integer number of coded bits for each input source bit (as opposed to e.g. three coded bits for every two input source bits) . Because of the bits added by the coder to provide redundancy to the bit stream, sometimes some of the encoded bits must be deleted before transmission (i.e. punctured) in order to match the rate of bits coming from the bit stream to the rate at which bits are transmitted.
Fig. 6 illustrates some of the principal components of a wireless communication system including a codec (encoder/ decoder) using convolutional encoding. At the transmitting end, input bits are encoded by a (channel) encoder 10 including, in order, a convolutional encoder module 10a, a puncturing module 10b, and a serial to parallel conversion followed by an interleaving module 10c. (The input bits are typically already source encoded to remove unnecessary redundancy before arriving at the encoder 10.) After encoding the input bits to provide symbols each corresponding to some number of input bits, the symbols are each used (in turn) to modulate a waveform in a modulator 12, and the modulated waveforms are then communicated to a de-modulator 14 on the receiver side via a transmission channel (here including the actual transmitter and receiver equipment) . On the receiving side, after the de-modulator determines a symbol (representing the received encoded bits provided no error in transmission has occurred) corresponding to each received modulate waveform, a channel decoder 11 (including, in order, a module lie for de-interleaving and converting symbols to bits, a module lib for inserting punctured bits, i.e. for inserting O's for each punctured bit according to predefined puncturing tables indicating in the encoder which bits to puncture out and copies of the same tables in the decoder indicating where bits were punctured out and so where to insert zeros, and a convolutional decoder 11a) examines the received symbols and provides a corresponding output bit stream, possibly removing some errors in transmission thanks to the forward error correction capacity of the communication system provided by the convolutional encoder 11a and corresponding decoder 11a. (The interleaving operation is vital when convolutional codes are used, because such codes are designed to cope well with random errors and their performance decreases dramatically if the errors are bursty and interleaving is not used.)
Where all the data bits to be communicated can be assumed to have equal importance, such as when the data bits are not encoded by an encoder module like the encoder module 10a, puncturing is straightforward; in such situations, data bits are simply punctured out evenly over a codec frame to maintain some same average error protection capability over the entire codec frame. For encoded speech signals, the situation is quite different because it is often the case that some coded (encoded) bits are more important to subjective speech quality while errors in other bits cause only some acceptable degradation (roughness) in the transmitted speech signal, and so some of the bits of an encoded speech bit stream have to be more heavily protected (by the bits added by the convolutional encoder) against channel errors than others of the bits; such protection is provided by what are called unequal error protection schemes (UEPs) often used in speech transmission.
Although, the benefit of unequal error protection in the transmission of speech signals is known, some state of the art technologies such as WCDMA (Wideband Code Division Multiple Access) specified by 3GPP (Third Generation Partnership Program) do not fully exploit UEP schemes for speech traffic. In a 3GPP/WCDMA system, UEP is made possible by dividing a speech encoded frame into sub-sequences and by coding them with separate Equal Error Protection (EEP) channel codecs (3GPP TS 25.212) so as to create different sub-sequences having different error protection, with the result that the encoded frame has a rough, stepwise kind of unequal error protection. Such a stepwise UEP scheme is not the most optimal for speech services, but certainly improves the error robustness compared to what is provided by a pure EEP scheme.
The main idea behind using generic channel codecs in a 3GPP/WCDMA system to provide stepwise UEP is to avoid having to use channel codecs specialized to each type of transmitted data. But in case of speech, a specialized codec providing UEP is advantageous, and there are other applications besides speech (such as image coding) that might also be improved by using specialized channel codecs. However, if data from all such applications each had its own traffic channel (one for speech, one for graphics, and so on) , system complexity could become unacceptable. As it is, designers of the 3GPP/WCDMA systems have determined that the non-optimality of EEP channel coding can be compensated for by transmitting at higher power.
On the other hand, the (older) GSM (Global System for Mobile Communications) system does use dedicated channels for speech transmission (TCH/FS, TCH/HS, TCH/EFS, TCH/AFS, TCH/AHS, O-TCH/AHS) , as set out in 3GPP TS 45.003. The latest channel codecs of GSM have a puncturing system that finds the most optimal error protection for each speech encoded bit, thus maximizing the overall speech quality in the transmission.
Fig. 1 gives an example of bit error rate (BER) distribution for bits in a frame of speech data after encoding by a channel encoder highly optimized for speech transmission and then decoded. Two different bit position classes are shown: class CA includes bit positions from 1 to 64 where the most important bits (bits that are the most critical to subjective speech quality) are conveyed, and also includes bit positions from 65 to 70 where cyclic redundancy check (CRC) bits are inserted into the encoded bit stream for detecting errors in transmission of the data bits of class CA; and class CB includes bit positions from 71 to 177 where the remaining speech encoded bits are carried, those not as critical to subjective speech quality. In the example shown in Fig. 1, as is usually done, all bits were first reordered in the channel encoder according to subjective importance before any other action was performed by the encoder, with the most important bit placed in bit position 1 and the least important bit in bit position 177. It can be seen that the BER curve for the class CA bits is quite flat (nearly the same for all bits) and of low amplitude, both for the data bits of class CA (highly important to speech quality) and for the CRC bits in class CA. The channel codec is designed to provide such a flat, low- amplitude bit error rate for class CA bit positions because all bits in a frame are usually either kept or discarded depending on the check provided by the CRC bits (i.e. so that an entire whole frame is discarded if any one of the bits belonging to class CA for the frame is in error) . Thus, the overall frame error rate (FER) is minimized when the BER within class CA bits is flat and small.
In contrast to errors in class CA, a decoder will typically not reject an entire frame of bits with bit errors in bits in other than class CA, bits which are typically increasingly less important to speech quality (i.e. the bits in the higher bit positions are less important than the bits in the lower bit positions) , and so for optimal error protection for such bits, the protection capability decreases as the bit position increases (i.e. as the subjective importance of the source bits decreases) .
Since puncturing to achieve rate matching weakens error protection (by removing redundancy) , it is obviously advantageous to preferably puncture less important bits before puncturing more important bits.
A convolutional encoder, which is usually implemented as a shift register, can be completely described by a connection diagram, such as the connection diagram 110 of Fig. 7 for a rate R= 1/2 encoder (2 output bits for every input bit) , showing three delay elements Ilia 111b 111c, and two adders 112 114. The code rate R is in general written as k/n indicating that the encoder maps a k-tuple to an n-tuple. It is possible to more concisely describe an encoder than by providing a connection diagram. One more concise specification can be given by stating the values of n, k, and the so-called constraint length K (defined in different ways, such as the number of k-tuples that affect the formation of each n-tuple during encoding) . For the encoder of Fig. 7, n=2, k=l, and K=3. Another way is to give the adder connections in the form of either generator vectors or generator polynomials. For example, the rate 1/2 code of Fig. 7 has the generator vectors gx= 111 and g2 = 101, or equivalently, the generator polynomials gx (x) =x2+x+l and g2 (x) = x2+l, where x is the delay and modulo 2 addition is used in all calculations involving the generator polynomials so that, e.g. (x+1) gl (x) =x3+l . (with x having the value of one delay element, i.e. a delay of one sample, x°=l indicates no delay, x1 indicates a delay of one sample, x2 indicates a delay of two samples, etc.)
A (generator) polynomial produces only one bit at a time, but for an entire frame's worth of bits, each polynomial contributes a bit multiple times, the same number of times for each polynomial. If all input bits to a polynomial have the same importance, then all output bits of the polynomial also have the same importance. Different polynomials have different importance, i.e. all the polynomial do not make an equal contribution to error protection performance of the convolutional code. Some applications, like speech codecs, provide source bits for the convolutional encoder, but all the bits do not have equal subjective importance and thus the output bits from the convolutional encoder do not have equal importance (even if the generator polynomials would have equal contribution to error protection performance) . Thus, to puncture preferentially less important bits when manually optimizing puncturing for a codec having a convolutional encoder producing bits that are not all of the same importance (and so to provide an optimized UEP channel codec) , the puncturing can be performed on the basis of the different importance of different bits and also on the basis of the different importance of different polynomials associated with the convolutional encoder. In other words, puncturing can be performed on a bit-by-bit basis and also on a polynomial -by- polynomial basis.
Optimized UEP channel codecs for speech traffic transmission exist, but all such codecs exploit dedicated and manually optimized puncturing tables. Existing prior-art systems that use generic (low complexity) algorithms for puncturing, do not use UEP but instead use EEP and unsophisticated puncturing.
The modulation technique used- -e.g. 8 phase shift keying (PSK) modulation--is another factor in the design of optimal puncturing for convolutional codes for speech traffic channels, especially when multiple bits are transmitted as a single symbol (e.g. in 8 -PSK modulation, 3 -bits are conveyed per symbol) . In such systems some of the bits in the transmitted symbols may have higher error probability than others. Modulation in such systems causes a phenomenon that is sometimes called "soft puncturing" (of the bits that have the weaker protection) because the modulation technique weakens the error protection just as (hard or real) puncturing does, where bits are actually removed from the bit stream. For example, in 8-PSK modulation, one of the bits of the three bits of a symbol has twice the error probability compared to the other two bits. More specifically, "soft puncturing" is the act of assigning a bit to a position in a bit stream so that when it is converted to a symbol it is in a position having weaker protection.
Although in 3G channel coding there is a clear advantage in using a generic coding method to minimize the channel codec complexity, there is a clear drawback in the way a generic coding method performs (hard) puncturing (i.e. puncturing for rate matching) . In generic coding, bits are evenly punctured out of the convolution encoded stream, i.e. independently of what polynomial they are originate from. Such puncturing degrades the error protection capability of the code, because, as mentioned, (the bits from) all the different convolutional polynomials are not equally important. Puncturing of (bits from) some of the polynomials has less impact to the code properties (related to error protection) than puncturing of some other polynomials. Therefore closer control of puncturing (puncturing polynomial by polynomial) would increase the performance of a 3G channel codec.
Other drawbacks in a prior art 3G channel coding system for speech traffic channels are associated with the use of EEP schemes, as also already mentioned. As explained above, the only possible way in a 3G system to introduce some difference in error protection for different importance classes (e.g. CA & CB) is to split the speech encoded data into two or more separate streams and channel encode each using separate convolutional codes and then transmit each in a separate transport channel, providing "stepwise" UEP. Besides only approximating true UEP, general coding theory states that overall coding efficiency degrades when data being encoded is split into parts and coded separately. Further, stepwise UEP with its several convolutional codes costs more than true UEP, since there is an additional cost associated with the tailing bits of each additional convolutional code.
Current GSM systems use hand-optimized puncturing tables which provide UEP with flat protection for the most important bits and smoothly decreasing protection performance as a function of decreasing bit importance for all other bits. In addition, existing GSM systems use a dedicated transport channel for speech data optimized by exhaustive objective and subjective speech quality evaluation. If the number of different supported speech codecs is increased to provide UEP, the implementation complexity of the entire channel codec increases as does the complexity of the implementation testing. Currently, the number of channel codecs in GSM systems is increasing; the latest speech codecs, called AMR (Adaptive Multi Rate) and AMR-WB (Adaptive Multi Rate - Wide Band) codecs have eight and nine different operation modes (each having an associated channel codec) respectively. Examples of channel modes are: GMSK (Gaussian Medium Shift Keying) full rate, GMSK half-rate, 8-PSK full rate, 8-PSK half rate. Currently there are 25 different channel codecs specified for GSM systems (TCH/FS, TCH/HS, TCH/EFS, TCH/AFS 12.2, TCH/AFS 10.2, TCH/AFS 7.95, TCH/AFS 7.4, TCH/AFS 6.7, TCH/AFS 5.9, TCH/AFS 5.15, TCH/AFS 4.75, TCH/AHS 7.95, TCH/AHS 7.4, TCH/AHS 6.7, TCH/AHS 5.9, TCH/AHS 5.15, TCH/AHS 4.75, O- TCH/AFS 12.2, 0-TCH/AFS 10.2, O-TCH/AFS 7.95, O-TCH/AFS 7.4, 0-TCH/AFS 6.7, O-TCH/AFS 5.9, O-TCH/AFS 5.15, O-TCH/AFS 4.75), but that number will increase when channel codecs for AMR-WB codec (in GMSK full rate, 8-PSK full rate and 8-PSK half rate channel modes) are specified.
Because the latest GSM channel codecs (for AMR and AMR- WB) have been designed so that their puncturing is optimized for each codec and for each codec mode by manually determining (tuning) a respective puncturing table, there are now many quite large puncturing tables, and so implementing all GSM channel codecs requires a large amount of memory and exhaustive implementation testing (since operation in every mode must be separately tested in a large number of channel conditions) .
What is needed is a generalized puncturing algorithm that combines the benefits of manually optimized puncturing tables (providing optimal performance) as in GSM channel codecs, with the benefits of generic puncturing algorithms (providing lower complexity and simpler implementation testing) as in 3G channel codecs .
DISCLOSURE OF THE INVENTION
Accordingly, in a first aspect of the invention, a method is provided for channel encoding and decoding data bits for transmission via a wireless communication channel a frame at a time, each frame consisting of a predetermined number of the data bits, each of the data bits predetermined to belong to one or another of a plurality of ordered predetermined different protection classes including a first class CA and one or more other classes CB, ..., C_ including a last class Cιas , the different protection classes having predetermined different desired levels of error protection, the first class CA having the strongest predetermined desired level of error protection, the method characterized by puncturing steps including: a step of determining how many bits to puncture in each protection class so as to achieve either the predetermined desired level of error protection for the protection class or a different desired level of error protection arrived at by iteration to avoid determining a negative value of bits to puncture from any class; and a step of identifying which bits to puncture for each class so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB, ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class, and for then providing information indicating which bits to puncture and in which order to puncture the bits.
In accord with the first aspect of the invention, each class CA CB, ..., Cz may include bits provided by one or more respective generator polynomials each of which provides bits of possibly different importance in respect to error protection and so each of the generator polynomials for the class may be more or less important than others of the generator polynomials of the class, and in the step of identifying which bits to puncture for each class, at least some bits originating from the less important generator polynomials may be selected for puncturing out before bits originating from the more important generator polynomials.
Also in accord with the first aspect of the invention, the method may be further characterized by: a step of resizing the predetermined first two classes so as to enlarge the first class by a number of bits approximately equal to 10% of the size of the first class, and to decrease the second class by the same number of bits.
Also in accord with the first aspect of the invention, the method may be further characterized by: a step of determining how many weak bits to allocate to each class CA, CB, ••■/ Cz so as to maintain the predetermined desired level of error protection; and a step of identifying which weak bits to allocate to each class CA, CB/ .... Cz so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB, ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class.
Still also in accord with the first aspect of the invention, the method may be further characterized by: a step of either constructing a puncturing table and performing the puncturing using the puncturing table, or performing the puncturing without using a puncturing table.
Still also in accord with the first aspect of the invention, the method may also comprise inverse puncturing steps, responsive to information indicating which bits to puncture and in what order.
In a second aspect of the invention, an apparatus is provided for channel encoding a data bits for transmission via a wireless communication channel a frame at a time, each frame consisting of a predetermined number of the data bits, each of the data bits predetermined to belong to one or another of a plurality of ordered predetermined different protection classes including a first class CA and one or more other classes CB, ..., Cz including a last class Cιast the different protection classes having predetermined different desired levels of error protection, the first class CA having the strongest predetermined desired level of error protection, the apparatus characterized by: means for determining how many bits to puncture in each protection class so as to achieve either the predetermined desired level of error protection for the protection class or a different desired level of error protection arrived at by iteration to avoid determining a negative value of bits to puncture from any class; and means for identifying which bits to puncture for each class so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB, ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class.
In accord with the second aspect of the invention, each class CA, CB, ..., Cz may include bits provided by one or more respective generator polynomials each of which provides bits of possibly different importance in respect to error protection and so each of the generator polynomials for the class may be more or less important than others of the generator polynomials of the class, and in identifying which bits to puncture for each class, at least some bits originating from the less important generator polynomials may be selected for puncturing out before bits originating from the more important generator polynomials.
Also in accord with the second aspect of the invention, the apparatus may be further characterized by: means for resizing the predetermined first two classes so as to enlarge the first class by a number of bits approximately equal to 10% of the size of the first class, and to decrease the second class by the same number of bits.
Also in accord with the second aspect of the invention, the apparatus may be further characterized by: means for determining how many weak bits to allocate to each class CA, CB, ..., C2 so as to maintain the predetermined desired level of error protection; and means for identifying which weak bits to allocate to each class CA, CB, .../ Cz so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB/ ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class.
Sill also in accord with the second aspect of the invention, the apparatus may be further characterized by means for either constructing a puncturing table and performing the puncturing using the puncturing table, or for performing the puncturing without using a puncturing table.
Also in accord with the second aspect of the invention, the apparatus may also comprise inverse puncturing means, responsive to information indicating which bits to puncture and in what order .
In a third aspect of the invention, a system is provided comprising a plurality of wireless terminals and a base station, at least one of the wireless terminals and the base station each including: a channel encoder, responsive to input bits, for providing transmitter side symbol waveforms, characterized in that it includes an apparatus as in the first aspect of the invention; and a channel decoder, responsive to the transmitter side symbol waveforms as modified by a communication channel, including means for performing steps undoing any puncturing performed on bits conveyed by the transmitter side symbol waveforms.
The invention thus provides for a convolutional codec a generalized puncturing algorithm that combines the benefits of manually optimized puncturing tables (optimal performance) as in GSM channel codecs and generic puncturing algorithms (lower complexity and simpler implementation testing) as in 3G channel codecs, by providing a procedure to generate puncturing tables for each application (codec/ codec mode) without the need for separate puncturing tables for each application. Although generalized puncturing algorithms usually perform less well than manually optimized puncturing schemes, the generalized puncturing algorithm of the invention makes the difference marginal. In first puncturing (removing) bits originating from the least important polynomial of a convolutional codec (the polynomial whose bits have the smallest effect on the convolutional codec properties) , the algorithm mimics manually optimized puncturing (using manually tuned puncturing tables) .
BRIEF DESCRIPTION OF THE DRAWINGS
The above and other objects, features and advantages of the invention will become apparent from a consideration of the subsequent detailed description presented in connection with accompanying drawings, in which:
Fig. 1 is a graph of bit error rate in a highly optimized channel codec for speech transmission according to the prior art (optimized by use of manually tuned puncturing tables) .
Fig. 2 is a graph of bit error rate in a channel codec using a generalized puncturing algorithm according to the invention.
Fig. 3 is a graph of a comparison of the bit error rates graphed in Figs. 1 and 2, the solid line for a manually optimized channel codec and the dashed line for a channel codec using the generalized algorithm according to the invention.
Figs. 4A and 4B are schematic illustrations of puncturing for a first (most important) class of bits according to a prior art system (such as e.g. a 3G rate matching system) and according to the invention, respectively.
Figs. 5A-C are in combination a high level functional diagram of a method provided by the invention.
Fig. 6 is a context diagram of a communication system of a type in which the invention can be used, including an encoder performing convolutional encoding and also performing puncturing (which can be done according either to the invention or to the prior art) . Fig. 7 is a schematic illustration of an implementation of an exemplary (prior art ) convolutional encoder .
BEST MODE FOR CARRYING OUT THE INVENTION
The invention provides a generalized puncturing algorithm incorporating techniques used in manual tuning of puncturing tables for use with convolutional coding, and, in addition, for accounting for soft puncturing by multi -bit/symbol modulation systems (such as an 8PSK modulation system) in which some bits (called weak bits) are transmitted as part of a symbol with less protection than other bits (called strong bits) of the symbol.
Puncturing and the allocation of weak bits in systems transmitting multiple bits per symbol are by far the most challenging aspects of the operation of a channel codec to automate. When automated, as explained below, only one module remains needing a large predefined data table for providing unequal error protection (UEP) , a subjective importance ordering module, which executes before channel coding. Subjective importance ordering depends on the speech codec itself, not on the communication channel, and cannot be automated.
As in manually determining puncturing tables, in the preferred (typical) embodiment for a speech codec, the generalized puncturing algorithm of the invention assigns bits (data bits and redundancy bits) of a frame to one of two classes. First class CA includes bit positions from 1 to 64 where the most important bits (bits that are the most critical to subjective speech quality) are conveyed; class CA also includes bit positions from 65 to 70 where cyclic redundancy check (CRC) bits are inserted into the encoded bit stream for detecting errors in transmission of the data bits of class CA. Second class CB includes bit positions from 71 to 177 where the remaining speech encoded bits are carried, those not as critical to subjective speech quality. Figs. 5A-C in combination illustrate a generalized puncturing algorithm according to the invention, and Fig. 6 shows a communication system including a convolution coder 10a and a puncturing module 10b implementing the generalized puncturing algorithm of the invention. Referring now to Figs. 5A-C, the steps (at a high-level) of the generalized puncturing algorithm provided by the invention are indicated as belonging to one or another of three stages 51 52 53. In the first stage 51, given the total number of bits that must be punctured out of a bit frame (for matching the rate of arrival of bits as components of symbols at the transmitter to the rate of transmission by the transmitter) the algorithm calculates how many bits are to be punctured out of each of the two protection classes CA and CB (more than two protection classes are also possible) so as to achieve a predetermined desired (usually different) level of error protection for each class, and also calculates how many weak bits (if any, depending on the modulation being used) are to be allocated to each class to maintain the predetermined desired levels of error protection. In the second stage 52, the algorithm iterates to determine which bits in particular (i.e. to identify specific bits) to puncture in each class and which weak bits in particular to assign to each class identifying which bits to puncture for each class (CA CB) so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for the second class CB protection that decreases in the same manner as the subjective importance decreases from the beginning of the second class CB to the end. In the third stage 53, the algorithm either constructs a puncturing table (i.e. a puncturing matrix) or performs the puncturing "on the fly" (i.e. without using a table) , depending on which alternative is preferred. It should be noted that all state-of-the-art channel codecs allocate the most important bits to the beginning of a convolutional code, and the description here assumes such an allocation is performed on the input to the generalized puncturing algorithm, i.e. before the bits reach the first processing stage of the algorithm. If not, then the generalized puncturing algorithm provided by the invention is adapted to whatever allocation procedure is used.
One important feature of the invented algorithm is that once the protection classes (each an ordered set of bits) are defined, i.e. once bits in position 1 through some position number Ni are assigned to the first class CA, and so on, according to the prior art (3GPP TS45.003), the algorithm automatically increases the size of the first class CA by some factor D, typically around 10% and, correspondingly, reduces the size of the second class. This is done because the algorithm does not provide a flat error protection curve for all of the first class, but instead provides somewhat lower protection for the bits at the end of the ordered set of the first class bits. The D factor can be adaptive, i.e., the bigger the difference between the protection of two consecutive classes, the bigger the increase used to compensate for the weakened protection following the most important bits.
Detailed description of the first stage
In a first step 51a, the classes are input in terms of the numbers Nor;gC an& NorigC_ for each of the two protection classes CA and CB so that the bits in class CA are the bits in positions 1 through Nor,gC and the bits in class CB are the bits in positions NorigC +1 through NorigCA + NorigCe . The total number of bits in a frame is thus NorigCλ + NorigCs .
In a next step 51b, the classes are resized:
NCA = NorigCA +[D NorisC ( 1 )
and
NcB = NorigCB - lD NorigC (2 ) (in which indicates the integer part of x , i.e. the integer closest to but not greater than x ) so that Nc and N are the number of bits in class CA and class CB respectively after resizing (the total number of bits being unchanged) , and D (input or embedded in the algorithm) corresponds to the size of the transition region between class CA and CB expressed as a fraction of CA, typically on the order of 10%.
Next, with the bits to be transmitted assigned to one of two predetermined (per the prior art) classes, a first class CA and a second class CB (two classes being a typical case for channel coding for speech parameters) , in a step 51c the desired level of error protection capability for each class is input as a ratio R, (i.e. RA or RB ) for each class Ci (i.e. CA or CB) , where
in which NpunclC is the number of bits to be punctured from class
Ci and R is the coding rate of the convolutional code. The ratio MAB of the error protection capability of the class CA to that of class CB is thus:
m AB n (3.2)
When we set the ratio MAB of the error protection capability of the two classes to a desired fixed value, since we know the total number NpunctTotal of bits that must be punctured for rate matching for the channel in use, we can express the number of bits that must be punctured in class CB in terms of the number of punctured bits in class CA as follows:
M - λj _ λJ ( A )
1 ' punctCg λ v punctTotal ' ' punctCΛ ' ^ ' By substituting eq. (4) into eq. (3.1 and 3.2), we can solve for the number of bits that must be punctured in class CA to achieve some predetermined value of MAB . After that, we can then get the number of bits that must be punctured in class CB using eq. (4) . Sometimes it can happen that the desired difference in protection for the two classes (as set by MAB ) cannot be achieved exactly. Using eqns . (3.1), (3.2) and (4) as described, we can end up having a negative value for either class CA or class CB, and so we cannot actually achieve the predetermined value of MAB , or, equivalently, we cannot actually achieve the protection level R, for each of the two classes. A negative value for class CA means that even if we do not puncture the class CA at all, we cannot achieve the required protection difference between the two classes. A negative value for class CB means that the number of punctured bits needed to achieve the desired protection difference is more than the total number of bits required to be punctured to fit the coded stream into the channel, i.e. for rate matching. The former error condition (negative CA value) may happen quite often, but the latter case (negative CB value) is more rare because we usually assume that the ratio MAB is less than one, meaning that puncturing should be less in class CA.
Thus, in a next step 5Id, the algorithm determines the number of bits in each class to puncture to achieve the input value of protection R; (preferably relative to the value of protection in some other class or other classes) , but in case of either a negative NpunclC or NpunctCg value, the algorithm iterates using different values of MAB (higher or lower depending on whether NpunctCA or NpuπclCι is negative) to find the closest ratio to the original ratio resulting in non-negative values for both NpmelCA and NpmaCa . For example, if MAB is initially set to 0.85 and it results in a negative value for Npunctc > tne algorithm increases the desired ratio MAB by a small amount (such as 0.1 or about 10% of the original value) and again solves for N pmctCλ and N punclC..
When the determination of the number of punctured bits for each class is complete (and a corresponding value of MAB is determined, possibly different from the original value) , if the transmission modulation being used is a multiple bit per symbol scheme and has a higher bit error rate for some bits of a symbol than for others, i.e. there are weak bits as a result of the modulation being used (as is the case e.g. the GERAN 8- PSK modulation, where one bit out of every three bits in the transmission channel has around twice the bit error rate compared to the stronger bits and so one out of three is a "weak" bit) , then in a next step 51e, the algorithm determines the number of weak bits of a frame to allocate to each of the two classes so as to maintain the value of MAB given by eq. (3.2) . The procedure for the allocation is as follows. First, the algorithm substitutes into eq. (3.2) the unknown numbers N→r and N,„nr of soft (weak) bits to be allocated to the two classes for the variables NpmctC and NpunclC representing the number of bits to be punctured in each of the two classes, which results in the following equation for defining the allocation of soft (weak) bits among the two classes CA and CB:
where MAB has either its predetermined (or input) value or the value resulting from the iteration of step 51d. Next, the algorithm expresses the number NsoftCB of weak bits in class CB in terms of the number NsoftC of weak bits in class CA, knowing the total number N^^ of soft bits:
N sofiCB = soflTolat ~ " softCΛ ' ' ^ )
After solving eqns . (3.2) through (6), both the required numbers of bits to be punctured in each class and also the required allocation of weak bits among both classes is determined.
Detailed description of the second stage
The procedure of the second stage is repeated for each class separately.
For some classes the amount of puncturing needed is greater than the number of bits originating from any single generator polynomial. In such a case, and in general, first all the bits from the least important polynomial are punctured, then all the bits from the next least important polynomial, and so on until finally the bits that remain to be punctured are less in number than all the bits of the next least important polynomial and so to puncture the remaining bits, only some of the bits of that polynomial are punctured. The polynomial for which only some bits are punctures is here called the underpuncture polynomial . Thus, for the class Ci, the algorithm must determine the number N deletedPolynomiαhCι of polynomials to delete and also the number N punctInUnderpuncturePolyInCι of bits to be deleted from the underpuncture polynomial in class Ci, and does so using the following two equations:
" punctC, ~ bitsPerPolynomiαl^ deletedPolynomiαlsInC, ' * punctlnUnderpunct rePolylnC, • an°- I ' . /
N
N ' punctC, deletedPolynomiαlslnCi ( 7 . 2 )
N bitsPerPolynomiαl
in which again, |_Λ:J is the integer part of x , and where N punctC is the (previously determined) total number of bits to be punctured from class Ci, NbitsPerPolynomiαl is the (known) number of bits per polynomial ( same for all polynomials , regardless of class) , NdeIeledPolynomiαlsInCj is the (to be determined) number of polynomials in class Ci to delete , and N punctlnUnderpuncturePolyInCi is the
(to be determined) number of bits to be deleted (punctured) from the underpuncture polynomial for class Ci . Thus, in a step 52a, the algorithm first determines for a given class how many and which polynomials are to be entirely punctured (deleted) using eq. (7.2), and then does so.
At this point, following step 52a, for the class Ci all that must be done in the second stage is to determine which bits are to be punctured from the underpuncture polynomial and to determine how to account for the weak bits in case of a modulation scheme providing weak bits, i.e. determine what soft puncturing to perform.
If we are processing the first class CA, i.e. if Ci is CA, then in a next step 52c we preferably define two puncturing step sizes for the underpuncture polynomial, and also define special puncturing for the beginning of the class, and in a next step 52d, we define the dithering to be used, i.e. whether or not to alternate the two puncturing step sizes. These two steps are intended to achieve the aim of making the error protection capability of the first class as flat as possible to minimize the number of frame errors (where an entire frame is rejected, which, as explained, is triggered by any error within the first class) . The defining of the step sizes (step 52c) and defining the dithering (step 52d) is done to puncture the bits (of the underpuncture polynomial) from the first class as evenly as possible. We know that we have to puncture some number of bits out of the bits originating from the underpuncture polynomial, but it seldom happens that the ratio of bits to be punctured to bits originating from the underpuncture polynomial is an integer. For example if we have 99 bits generated by the polynomial GO and we want to puncture 22 bits, we have to puncture out every 4.5th bit (99/22) . The easiest way to do so is to perform puncturing with alternating steps of 4 and 5. In other words, we dither those step sizes to get the protection as flat as possible, i.e. we puncture at step sizes of 4, 5, 4, 5, ... and so on until 22 bits are punctured. Thus, we typically alternate the puncturing step sizes with as small a difference in the step sizes as possible so as to create as equal protection as possible over all the bits in the most important class.
The defining of special (heavier) puncturing (step 52c) for the beginning of the first class is done to get flat error protection capability for the class; it is necessary to account for the fact that the beginning (as well as the end) of a convolutional code always has better error protection than the rest of the code, i.e. the bits in the end of the class CB have lower BER than the bits just before them. This is because convolutional coding starts from a known state and ends in a known state, which reduces the number of possible states in the coding trellis leading from the beginning and to the end states. Because we want to make the error protection of the first class CA as even as possible, in the preferred embodiment of the invention we puncture the very beginning of the first class more heavily than the rest of the class, i.e. we preferably define special (heavier) puncturing for the beginning of the first class.
In addition to steps 52c and 52d in respect to dithering, the algorithm also performs a step 52e of allocating bits in the class at hand so as to be transmitted with lower error protection, i.e. a step of allocating weak bits. If weak bits exist because of the modulation scheme being used, the weak bits are evenly distributed among the bits originating from the underpuncture polynomial. If all the remaining bits from the underpuncture polynomial are allocated for the weak bits and there are still weak bits to allocate, the remaining weak bits are evenly allocated to the bits originating from the next least important polynomial, and so on. (By allocating weak bits in a class, we mean re-ordering the bits in the class so that after modulation, the weak bits are evenly distributed. )
Whereas for the first class CA we provide relatively strong and uniform protection so as to produce a relatively small and flat bit error rate, when processing other classes besides the first, we do not want to make the error protection flat, but instead we want to have protection decrease in the same manner as the subjective importance decreases from the beginning of the class to the end, and if the class is not the last class (nor the first) , then our aim is achieved by a step 52f of defining preferably two or more step sizes for the underpuncture polynomial and a step 52g of defining a dithering pattern. In some applications, for classes other than the first class, we do not define alternating puncturing step sizes to be the closest integers (i.e. 4 and 5 in the previous example) so as to dither the puncturing steps in that way, and we do not even dither the puncturing steps at all. Instead, we sometimes get more of a difference in error protection within the class and use more than two puncturing steps, such as e.g. 3, 4, 5 and 6 instead of just 4 and 5 as in the previous example. Alternatively, we may sometimes define step sizes based on the two closest integers (i.e. 4 and 5) but use them without dithering (i.e. we use steps of 5, 5, 5, ..., 4, 4, 4, ..., 4) . Whenever we do not use dithering, the convolutional code has error protection that decreases significantly at the end of the class. In addition to steps 52f and 52g in respect to dithering, for other than the first class and the last class, the algorithm also performs the step 52e of allocating bits so as to be transmitted with lower error protection.
If we are processing the last class (the second class CB in case of only two classes) , we take into account the previously discussed special property of the end of the convolutional code and hence we perform a step 52h of defining step sizes and special (heavier) puncturing for the end of the last class, a step 52i of defining the dithering for the last class, and a step 52j of allocating weak bits in the last class . Detailed description of the third stage
When we have reached the third and the last stage of the algorithm, we have determined the extent of puncturing for each class and the exact puncturing steps for the polynomial (s) to be punctured. In addition, we have determined what bits within each class will be allocated to positions so as to be transmitted as weak bits. Thus, by the third stage, we have all the information necessary for puncturing. In performing the puncturing, there are two options. Using the information determined in the first two stages, we can either perform puncturing "on the fly," i.e. without using puncturing tables (matrices) , or we can build puncturing tables (matrices) to be used with a general puncturing routine. Which way is preferable depends on the implementation.
Discussion
For the receive side to recover the source encoded bits (the input bits to the convolutional encoder 10a) , the decoder 11, and more specifically the inverse puncturing module 11a, must receive not only the bit stream to prepare for the convolutional decoder (by inserting zeroes for the punctured bits and for reordering the bits to undo the weak bit allocations) but also sufficient information to determine how to perform its functions, i.e. sufficient information to determine the dithering and weak bit allocations made by the (receiver side) puncturing module 10b. In some applications, the dithering and weak bit allocations can be hardwired, and in other cases, they can be dynamic. In case of dynamic dithering and weak bit allocations, the information needed by the inverse puncturing module is preferably communicated using a different channel than is used for the data.
A communication system using the invention preferably includes components as shown and as ordered in Fig. 6, with the serial to parallel (bit to symbol) conversion being performed prior to the interleaving. It is possible however to perform the interleaving before the serial to parallel conversion, but then the puncturing module must take into account the pattern that is to be used in the interleaving operation so as to be able to properly allocate the so-called weak bits among the different protection classes. One way to take into account the interleaving operation is to have the puncturing module 10b (which also makes the weak bit allocations) perform the inverse interleaving operation, make the weak bit allocations, and then perform the interleaving operation, which is then performed one more time by the module 10c performing first the interleaving and then the serial to parallel bit conversion.
As mentioned, although generalized puncturing algorithms usually perform less well than manually optimized puncturing schemes, the invention provides a procedure that makes the difference marginal. An example of where the use of manually optimized puncturing tables (Fig. 1) is replaced by the generalized puncturing algorithm according to the invention is illustrated in the Fig. 2, showing that the difference between the methods can be very small.
The difference between a 3G system, which punctures bits without regard from the polynomial that originates the bits, and a system using the generalized puncturing algorithm of the invention (and so puncturing bits from less important polynomials before bits from more important polynomials) is illustrated in Figs. 4A (puncturing of the first class bits in a 3G system) and 4B (puncturing of the first class bits using the invention) . Figs. 4A and 4B show that whereas the prior art method punctures (the first class) bits (as well as other bits) independently of the polynomial generating the bits, the generalized puncturing algorithm of the invention punctures only bits originating from generator polynomial C (the "least important polynomial" in the sense that the bits it generates have the least effect on subjective speech quality in case of a codec), which improves the performance of the code, i.e. which improves reception. It is to be understood that the above-described arrangements are only illustrative of the application of the principles of the present invention. Numerous modifications and alternative arrangements may be devised by those skilled in the art without departing from the scope of the present invention, and the appended claims are intended to cover such modifications and arrangements.
Appendix Example C- code implementing described system :
/* Class CA IS here indicated as la and class CB as lb */
/* Create the puncturing matrix */ int punctureStepByStep(Wordl6 *m, int pStepsU, int nSource, int rate, int nStep, int nPunct, int nDelPol, Wordlβ punctTable [] , int nSoftPuncture) { int cPunct, cStep, cBit, cRate,
Wordl6 *m2, *pPtr, int cSoftPuncture, bitCount = 0, softStep, softOff, cPunct = 0, ιn2 = in,
/* Initialise the puncturing matrix to all ones, l e , no puncturing as a default*/ for (cBιt=0 , cBιt<nSource*rate, cBιt++) punctTable [cBit] = 1,
/* Puncture out the complete polynomials if required
/* Set Pointers to the beginning of first polynomial not totally punctured */ m = ιn2 + nDelPol, pPtr = punctTable + nDelPol,
/* Set number of weak bits (8-PSK) m the first not totally deleted polynomial */ if (nSoftPuncture >= nSource - nPunct) { cSof Puncture = nSource nPunct, softStep = 1,
} else if (nSof Puncture > 0) { cSoftPuncture = nSof Puncture, softStep = (nSource - nPunct) / nSoftPuncture,
} else{ cSoftPuncture = 0, softStep = nSource - nPunct,
} nSoftPuncture = nSoftPuncture - cSoftPuncture,
/* If the length of data not divisible by number of weak bits, define starting offset
*/ softOff = nSource - nPunct - softStep * cSoftPuncture,
/* Then loop through the first polynomial which is only partly punctured */ for (cStep=0 , cStep<nStep,cStep++, pPtr += rate, in += rate) { /* Copy bits by puncturing steps */
/* Loop through bits in step,*/ for (cBιt=0,cBιt < pSteps [cStep] -1, cB t++, pPtr += rate, in += rate, bιtCount++) { if ( (bιtCount%softStep == 0) 5_<_.(cSoftPuncture>0) £.£_ (b tCount>=softOff) ) { CSoftPuncture- - , *pPtr = 2,
) else{
•pPtr = 1,
} }
/* Now check whether we have still bits to be punctured left */ /* If not, then check whether any weaks bits are still unallocated */ if ( (cPunct<nPunct) ) { cPunct++,
*pPtr = 0,
} else if ( (bιtCount%softStep == 0) &__(cSoftPuncture>0) 5___(bιtCount>=softOff) ) { cSoftPuncture-- ,
*pPtr = 2, bιtCount++,
} else{
*pPtr = 1, bιtCount++,
/* Then loop through the rest of the polynomial not punctured, except the */ /* possible weak bits in 8-PSK */ for (cRate=nDelPol+l, cRate < rate, cRate++) { /* Loop through single coded bit */ in = in2 + cRate, pPtr = punctTable + cRate, /* Define how many weak bits m 8-PSK we can fit into the current polynomial */ if (nSoftPuncture >= nSource) { cSoftPuncture = nSource, softStep = 1,
} else if (nSoftPuncture > 0) { cSoftPuncture = nSof Puncture, softStep = nSource / nSoftPuncture,
} else{ cSoftPuncture = 0, softStep = nSource;
} nSoftPuncture = nSoftPuncture - cSoftPuncture; softOff = nSource - softStep * cSoftPuncture; bitCount = 0;
/* Copy bits by puncturing steps */ for (cStep=0 , cStep<nStep, cStep++) {
/* Loop through bits in step */ fo (cBιt=0;cBιt < pSteps [cStep] , cBιt++, pPtr += rate, in += rate) {
/* We either have weak bits or normal bits but no puncturing */ if ( (bιtCount%softStep == 0) __&(cSoftPuncture>0) && (bιtCount>=softOff) ) {
*pPtr = 2; cSoftPuncture-- ,-
} else{
*pPtr = 1;
} bιtCount++,
} } ) return (cPunct + nDelPol * nSource);
}
/* This subroutine defines the dithering tables for alternating the puncturing steps */ /* and so evening out the error protection properties of the code */ int dιther2Steps (int pSteps [], int nSteps, int nBaseL, int nBaseH, int pBaseStepL, int pBaseStepH)
{
cL = nBaseL; cH = nBaseH; if (nBaseL == 0) { nH=nBaseH; nL = 0;
} else if (nBaseH == 0){ nL=nBaseL; nH = 0;
} else if ( (int) (nBaseH / nBaseL)==0){ nH=l; nL = nBaseL/nBaseH;
} else{ nL=l ; nH = nBaseH/nBaseL;
} while! (cL>0) I I (cH>0) ) { for (ι=0;κnH;ι++) { if (cH>0) { cH--; pSteps [nSteps] = pBaseStepH; nSteps++ ; } } for (ι=0 ; κnL; ι++) { test 0 ; if (cL>0) { cL-- ; pSteps [nSteps] - pBaseStepL; movelβO; nsteps++; ) } } return (nSteps) ;
}
/* The main puncturing routine, which calls dιther2steps () and punctureStepByStep 0 */ /* functions */ void FLOCpuncture (Wordlβ *ιn, Wordl6 *out, Wordlβ BitsPunctured, Wordlβ BitsConvEncoded,
Wordlδ rate, Wordlβ nClassla, Wordlδ nClasslb, Wordlβ nCRC, Wordl6 nTail,
Wordl6 nSoftBits) { int l, nPunct, pBaseStepL, pBaseStepH, cGlobalPunctured=0 , int nBaseL, nBaseH, tmp, nlaAndCRC, nlbAndTail int nPunctla, nPunctlb, nDelPolla, int nDelPollb, nDelPolH, nDelPolE, nStepla, nSteplb, nHead, nEnd, int nPunctH, nPunctE, int pSteps [1000] , nSoftBitsla, nSoftBitslb, nSoftBitsH, nSoftBitsE, ordlβ *ιn2, *out2, float abMatch, tmpf , static int fιrst=l, cnt,
((define ABMATCHING 0 85F ((define INC1A 0 10F #defιne USE8PSK 1
/* Just counters for complexity estimation */ fwc() , if (first) { cnt=getCounterId("FLO") , setCounter (cnt) ,
Inιt_WMOPS_counter 0, first = 0, } setCounter (cnt) , Reset_ MOPS_counter () ,
/* To define coding rate ratio between class la and lb */ abMatch = ABMATCHING, 1 = 0,
/* Pointer to puncturing tables */ punctPtr = t pPunct,
// Define the number of bits to be punctured nPunct=B tsConvEncoded BitsPunctured,
// Define two classes, first for la bits and CRC, second for class b and tail nlaAndCRC = nClassla + nCRC, nlbAndTail = nClasslb + nTail,
// Increase la by 10% to safeguard the last bits of that class from the weaker puncturing //from class lb, if not enough bits, then set classlb bits to zero tmp = (int) (nlaAndCRC * INC1A ), ιf(tmp> nlbAndTail) { tmp = nlbAndTail, } nlaAndCRC = nlaAndCRC + tmp, nlbAndTail = nlbAndTail - tmp, nPunctla = -1, nPunctlb = -1, nSoftBitsla = -1, nSoftBitslb = -1, while ( (nPunctla<0) | | (nPunctlbcO) ) {
// Then calculate the puncturing needed to get the desired coding rate for // classes la and lb
// If coding rate cannot be achieved, then iterate until correct rate is found, // which is as close as possible to the desired rate nPunctla = (Wordl6) ( ( nlaAndCRC * rate * nlbAndTail * ( abMatch - 1 0 ) + nlaAndCRC * nPunct) / ( nlaAndCRC + abMatch * nlbAndTail) ), nPunctlb = nPunct - nPunctla,
// Also define the number of possible weak bits for 8-PSK nSoftBitsla = (Wordlβ) ( ( nlaAndCRC * rate * nlbAndTail * ( abMatch - 1 0 ) + nlaAndCRC * nSoftBits) / ( nlaAndCRC + abMatch * nlbAndTail) ) , nSoftBitslb = nSoftBits - nSoftBitsla, i (nSoftBits == 0) { nSoftBitsla = 0, nSoftBitslb = 0, } if (nPunctla* (nlaAndCRC* (rate-l) ) ) { fpπntf (stderr, "Can not puncture so many bits from Classla to get the target rate %d (%d)\n", nPunctla, nPunctlb) , if (nPunctlb> (nlbAndTail* (rate-l) ) ) { fpπntf (stderr, "Can not puncture so many bits from Classlb to get the target rate %d (%d)\n" , nPunctla, nPunctlb) , exit (-1) , } abMatch += 0 01F, } // end while if (nPunctla<0) { fprintf (stderr, "Even without puncturing, Classla can not reach the target rate %d \n" , nPunctla) ,
tderr, "Even without puncturing, Classlb can not reach the target rate %d \n", Punctlb) ,
}
// Setting the first bit to be punctured in the start of the trellis
// The start of the trellis is better protected, so more bits can be punctured nHead = nTail - 2 , nDelPolH = rate/2 1, nPunctH = nTail - 4 + nDelPolH * nHead, if (nPunctla<nPunctH) nPunctH = nPunctla-1, if (nPunctH<0) nPunctH = 0 , tmp = nPunctH/nHead, nDelPolH = tmp, nPunctH = nPunctH - tmp * nHead,
// Also define the weak bits for the start of the trellis nSoftBitsH = nTaιl-1, if (nSoftBιtsla<nSoftBitsH) nSoftBitsH = nSoftBitsla, if (nSoftBitsH > nHead * rate nPunctH nDelPolH*rate) nSoftBitsH = nHead * rate nPunctH - nDelPolH*rate, for (ι=0, KnPunctH, ι++) { pSteps [l] =1, }
// Then create puncturing matrix for the start of the trellis cGlobalPunctured = punctureStepByStep (in, pSteps, nHead, rate, nHead, nPunctH, nDelPolH, tmpPunct, nSoftBitsH),
/* Compensate Head originally belonging to class la */
/* and which was processed as a separate instance above */ nPunctla = nPunctla - nPunctH - nDelPolH * nHead, nlaAndCRC = nlaAndCRC - nHead, nSoftBitsla - nSoftBitsla - nSoftBitsH,
/* Define how many total polynomials have to be punctured and how many bits */
/* are left to partially puncture the last punctured polynomial */ nDelPolla = 0, nStepla = 0, tmp = nPunctla/nlaAndCRC, nDelPolla = tmp, nPunctla = nPunctla tmp * nlaAndCRC,
/* Then define the two puncturing steps to distribute punctured bits evenly */ /* over the partially punctured polynomial */ if (nPunctla==0) { // Step once and no puncturing nStepla = 1, pSteps [0] = (Wordlβ) nlaAndCRC,
} else{ // Make sure that at least one bit is punctured from the body if head is punctured if ( (nPunctla) <= 0) { pBaseStepL = (Wordl6) (Wordl6) nlaAndCRC, nBaseL = (Wordlβ) 1, pBaseStepH - (Wordl6)0, nBaseH = (Wordl6) 0,
} else{ pBaseStepL = (Wordl6) (nlaAndCRC / nPunctla) , nBaseL = (Wordlδ) (nlaAndCRC / pBaseStepL) , if (nBaseL>nPunctla) nBaseL = nPunctla, pBaseStepH = pBaseStepL + 1, nBaseH = (nlaAndCRC) - nBaseL * pBaseStepL, nBaseL -= nBaseH,
}
// Use dither functions to create list of puncturing steps (psteps) nStepla = dιther2Steps (pSteps, nStepla, nBaseL, nBaseH, pBaseStepL, pBaseStepH), }
// Then create the puncturing matrix for class la cGlobalPunctured += punctureStepByStep (Sin [rate*nHead] , pSteps, nlaAndCRC, rate, nStepla, nPunctla, nDelPolla, _tmpPunct [rate*nHead] , nSoftBitsla),
// Then start counting for puncturing steps in class lb // Setting the last bit to be punctured in the end of the trellis
// The end of the trellis is better protected, so more bits can be punctured nEnd = nTail - 0, nDelPolE = rate/2 - 0, nPunctE - nTail - 4 + nDelPolE * nEnd, if (nPunctlb<nPunctE) nPunctE = nPunctlb-1, if (nPunctE<0) nPunctE = 0, tmp = nPunctE/nEnd, nDelPolE = tmp, nPunctE = nPunctE - tmp * nEnd, tmpf = nlbAndTail / (float) nEnd,
// Also define the weak bits for the start of the trellis nSoftBitsE = nSoftBitslb /tmpf - 4, if (nSoftBitsE<0) nSoftBitsE = 0, if (nSoftBιtslb<nSoftBitsE) nSoftBitsE = nSoftBitslb, if (nSoftBitsE > nEnd * rate nPunctE - nDelPolE*rate) nSoftBitsE = nEnd * rate nPunctE - nDelPolE*rate,
/* Compensate end originally belonging to class lb */ nPunctlb = nPunctlb - nPunctE - nDelPolE * nEnd, nlbAndTail = nlbAndTail - nEnd, nSoftBitslb = nSoftBitslb - nSoftBitsE,
/* Define how many total polynomials have to be punctured and how many bits */ /* are left to partially puncture the last punctured polynomial */ nSteplb = 0, nDelPollb = 0, tmp = nPunctlb/nlbAndTail, nDelPollb = tmp, nPunctlb = nPunctlb - tmp * nlbAndTail,
/* Then define the two puncturing steps to distribute punctured bits evenly */ /* over the partially punctured polynomial */ if (nPunctlb==0) { // Step once and no puncturing nSteplb = 1, pSteps [0] = (Wordlβ) nlbAndTail, else{ pBaseStepL = (Wordlβ) ( (nlbAndTail-nEnd*0) / (nPunctlb-nEnd*0) ) , pBaseStepH = pBaseStepL + 1, nBaseL - (Wordl6) ((nlbAndTail nEnd*0) / pBaseStepL), if (nBaseL> (nPunctlb-nEnd*0) ) nBaseL = nPunctlb - nEnd*0, nBaseH = (nlbAndTail-nEnd*0) - nBaseL * pBaseStepL, nBaseL -= nBaseH,
// Instead of dithering the class lb, two puncturing steps are not dithered // but the bigger step is used at the beginning and the smaller step in the end // So the error protection capability of the beginning will be better // but also the bits in the beginning are more important
((if 1 tmp = nSteplb, for (ι=tmp, Ktmp+nBaseH, ι++) { pSteps [l] =pBaseStepH, nSteplb++ ,
} tmp = nSteplb, for (ι=nSteplb, Ktmp+nBaseL, ι + + ) { pSteps [I] =pBaseStepL, nSteplb++ , }
((else nSteplb = dιther2Steps (pSteps, nSteplb, nBaseL, nBaseH, pBaseStepL, pBaseStepH), ttendif }
// Then create the puncturing matrix for class lb cGlobalPunctured += punctureStepByStep l-in [ (nlaAndCRC+nHead) *rate] , pSteps, nlbAndTail, rate, nSteplb, nPunctlb, nDelPollb, SctmpPunct [ (nlaAndCRC+nHead) *rate] , nSoftBitslb),
// Then define stepping table for the end of the trellis pSteps [0] = nEnd nPunctE + 1, for (ι=0, κnPunctE-1, ι++) { pSteps [l+i] =1, } // Then create puncturing matrix for the end of the trellis CGlobalPunctured += punctureStepByStep (&ιn [ (nlaAndCRC+nHead + nlbAndTail) *rate] , pSteps, nEnd, rate, nEnd, nPunctE, nDelPolE, itmpPunc [ (nlaAndCRC+nHead + nlbAndTail) *rate] , nSoftBitsE),
#ιfd tmpPunct [1] ) , intf (stderr, " ") , e-l) ) fprintf (stderr, "\n" ) , (tendif if (cGlobalPunctured ' =BιtsConvEncoded-BιtsPunctured) { fprintf (stderr, "Puncturing mismatch Punctured %d, should have been %d\n" , cGlobalPunctured, BitsConvEncoded-BitsPunctured) , test 0 , f c ( ) , WMOPS_output (0) ,
// In this version, use normal puncturing routine to do puncturing // according to the generated matrix
FIX_EDGE_Puncture (m2, BitsPunctured, BitsConvEncoded, tmpPunct, out2 ) ,

Claims

What is claimed is:
1. A method for channel encoding and decoding data bits for transmission via a wireless communication channel a frame at a time, each frame consisting of a predetermined number of the data bits, each of the data bits predetermined to belong to one or another of a plurality of ordered predetermined different protection classes including a first class CA and one or more other classes CB, ..., Cz including a last class Cιast the different protection classes having predetermined different desired levels of error protection, the first class CA having the strongest predetermined desired level of error protection, the method characterized by puncturing steps (10b) including: a step (51e) of determining how many bits to puncture in each protection class so as to achieve either the predetermined desired level of error protection for the protection class or a different desired level of error protection arrived at by iteration to avoid determining a negative value of bits to puncture from any class; and a step (52) of identifying which bits to puncture for each class so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB, ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class, and for then providing information indicating which bits to puncture and in which order to puncture the bits.
2. The method of claim 1, wherein each class CA, CB, ..., Cz includes bits provided by one or more respective generator polynomials each of which provides bits of possibly different importance in respect to error protection and so each of the generator polynomials for the class is more or less important than others of the generator polynomials of the class, and wherein in the step (52) of identifying which bits to puncture for each class, at least some bits originating from the less important generator polynomials are selected for puncturing out before bits originating from the more important generator polynomials .
3. The method of claim 1, further characterized by: a step (51b) of resizing the predetermined first two classes so as to enlarge the first class by a number of bits approximately equal to 10% of the size of the first class, and to decrease the second class by the same number of bits.
4. The method of claim 1, further characterized by: a step (51) of determining how many weak bits to allocate to each class CA, CB, ..., Cz so as to maintain the predetermined desired level of error protection; and a step (52) of identifying which weak bits to allocate to each class CA, CB, ..., Cz so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB, ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class .
5. The method of claim 1, further characterized by a step (53) of either constructing a puncturing table and performing the puncturing using the puncturing table, or performing the puncturing without using a puncturing table.
6. The method of claim 1, further comprising inverse puncturing steps (lib) , responsive to information indicating which bits to puncture and in what order.
7. An apparatus for channel encoding a data bits for transmission via a wireless communication channel a frame at a time, each frame consisting of a predetermined number of the data bits, each of the data bits predetermined to belong to one or another of a plurality of ordered predetermined different protection classes including a first class CA and one or more other classes CB, -. Cz including a last class Cιast. the different protection classes having predetermined different desired levels of error protection, the first class CA having the strongest predetermined desired level of error protection, the apparatus characterized by: means (10b) for determining (51e) how many bits to puncture in each protection class so as to achieve either the predetermined desired level of error protection for the protection class or a different desired level of error protection arrived at by iteration to avoid determining a negative value of bits to puncture from any class; and means (10b) for identifying (52) which bits to puncture for each class so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB, ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class .
8. The apparatus of claim 7, wherein each class CA/ CB, ..., Cz includes bits provided by one or more respective generator polynomials each of which provides bits of possibly different importance in respect to error protection and so each of the generator polynomials for the class is more or less important than others of the generator polynomials of the class, and wherein in identifying (52) which bits to puncture for each class, at least some bits originating from the less important generator polynomials are selected for puncturing out before bits originating from the more important generator polynomials.
9. The apparatus of claim 7, further characterized by: means (10b) for resizing (51b) the predetermined first two classes so as to enlarge the first class by a number of bits approximately equal to 10% of the size of the first class, and to decrease the second class by the same number of bits.
10. The apparatus of claim 7, further characterized by: means (10b) for determining (51) how many weak bits to allocate to each class CA, CB, .... Cz so as to maintain the predetermined desired level of error protection; and means (10b) for identifying (52) which weak bits to allocate to each class CA, CB, ..., Cz so as to provide relatively strong and uniform protection for all bits in the first class CA, and so as to provide for each other class CB, ..., Cz protection that decreases in the same manner as the subjective importance decreases from the beginning of the class to the end of the class.
11. The apparatus of claim 7, further characterized by means (10b) for either constructing (53) a puncturing table and performing the puncturing using the puncturing table, or for performing (53) the puncturing without using a puncturing table .
12. The apparatus of claim 7, further comprising inverse puncturing means (lib) , responsive to information indicating which bits to puncture and in what order.
13. A system, comprising a plurality of wireless terminals and a base station, at least one of the wireless terminals and the base station each including: a channel encoder (10), responsive to input bits, for providing transmitter side symbol waveforms, characterized in that it includes an apparatus as in claim 7; and a channel decoder (11) , responsive to the transmitter side symbol waveforms as modified by a communication channel, including means for performing steps undoing any puncturing performed on bits conveyed by the transmitter side symbol waveforms .
EP03732796A 2002-06-18 2003-06-13 Method and apparatus for puncturing with unequal error protection in a wireless communication system Withdrawn EP1514358A4 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US39025702P 2002-06-18 2002-06-18
US390257P 2002-06-18
US10/443,652 US7610543B2 (en) 2002-06-18 2003-05-21 Method and apparatus for puncturing with unequal error protection in a wireless communication system
US443652 2003-05-21
PCT/IB2003/002284 WO2003107539A1 (en) 2002-06-18 2003-06-13 Method and apparatus for puncturing with unequal error protection in a wireless communication system

Publications (2)

Publication Number Publication Date
EP1514358A1 true EP1514358A1 (en) 2005-03-16
EP1514358A4 EP1514358A4 (en) 2005-11-23

Family

ID=29740215

Family Applications (1)

Application Number Title Priority Date Filing Date
EP03732796A Withdrawn EP1514358A4 (en) 2002-06-18 2003-06-13 Method and apparatus for puncturing with unequal error protection in a wireless communication system

Country Status (4)

Country Link
US (1) US7610543B2 (en)
EP (1) EP1514358A4 (en)
AU (1) AU2003240181A1 (en)
WO (1) WO2003107539A1 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7995667B2 (en) * 2004-02-13 2011-08-09 Broadcom Corporation Reduced latency concatenated reed solomon-convolutional coding for MIMO wireless LAN
US7559007B1 (en) * 2006-03-10 2009-07-07 Xilinx, Inc. Encoding and decoding with puncturing
EP2025061B1 (en) * 2006-06-01 2012-11-14 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus relating to channel decoding
FR2929787B1 (en) * 2008-04-04 2010-12-17 Canon Kk METHOD AND DEVICE FOR PROCESSING A DATA STREAM
US8792407B2 (en) 2012-02-21 2014-07-29 Qualcomm Incorporated Wireless communication device power reduction method and apparatus
US9078266B2 (en) 2012-10-11 2015-07-07 Qualcomm Incorporated Devices and methods for facilitating discontinuous transmission on access terminals
US9161308B2 (en) * 2013-08-26 2015-10-13 Qualcomm Incorporated Devices and methods for facilitating autonomous discontinuous transmission in access terminals
US20160323425A1 (en) * 2015-04-29 2016-11-03 Qualcomm Incorporated Enhanced voice services (evs) in 3gpp2 network
WO2020006738A1 (en) 2018-07-05 2020-01-09 Huawei Technologies Co., Ltd. Method and apparatus for wireless communications with unequal error protection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0936772A2 (en) * 1998-02-11 1999-08-18 Lucent Technologies Inc. Unequal error protection for perceptual audio coders
EP1041756A2 (en) * 1999-03-29 2000-10-04 Lucent Technologies Inc. Multistream-in-band-on-channel transmission system
US6209116B1 (en) * 1997-10-09 2001-03-27 Hughes Electronics Corporation Adaptable overlays for forward error correction schemes based on trellis codes
US20020066061A1 (en) * 2000-10-17 2002-05-30 Brian Classon Encoding method and apparatus using squished trellis codes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668820A (en) * 1995-01-23 1997-09-16 Ericsson Inc. Digital communication system having a punctured convolutional coding system and method
US5699365A (en) * 1996-03-27 1997-12-16 Motorola, Inc. Apparatus and method for adaptive forward error correction in data communications
SG71832A1 (en) 1998-08-24 2000-04-18 Inst Of Microelectronics Method and apparatus for real-time determination of scalable channel coding scheme parameters
US6292917B1 (en) * 1998-09-30 2001-09-18 Agere Systems Guardian Corp. Unequal error protection for digital broadcasting using channel classification
US6223324B1 (en) * 1999-01-05 2001-04-24 Agere Systems Guardian Corp. Multiple program unequal error protection for digital audio broadcasting and other applications
US6311306B1 (en) 1999-04-26 2001-10-30 Motorola, Inc. System for error control by subdividing coded information units into subsets reordering and interlacing the subsets, to produce a set of interleaved coded information units
US6898743B2 (en) 2000-07-03 2005-05-24 Lg Electronics Inc. Data rate matching method in 3GPP2 system
US6772388B2 (en) * 2000-12-06 2004-08-03 Motorola, Inc Apparatus and method for providing optimal adaptive forward error correction in data communications
US6732321B2 (en) * 2001-03-27 2004-05-04 Motorola, Inc. Method, apparatus, and article of manufacture for error detection and channel management in a communication system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209116B1 (en) * 1997-10-09 2001-03-27 Hughes Electronics Corporation Adaptable overlays for forward error correction schemes based on trellis codes
EP0936772A2 (en) * 1998-02-11 1999-08-18 Lucent Technologies Inc. Unequal error protection for perceptual audio coders
EP1041756A2 (en) * 1999-03-29 2000-10-04 Lucent Technologies Inc. Multistream-in-band-on-channel transmission system
US20020066061A1 (en) * 2000-10-17 2002-05-30 Brian Classon Encoding method and apparatus using squished trellis codes

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"Digital cellular telecommunications system (Phase 2+); Channel coding (3GPP TS 45.003 version 4.1.0 Release 4); ETSI TS 145 003" ETSI STANDARDS, EUROPEAN TELECOMMUNICATIONS STANDARDS INSTITUTE, SOPHIA-ANTIPO, FR, vol. 3-G1, no. V410, November 2001 (2001-11), XP014010659 ISSN: 0000-0001 *
FRANK BURKERT ET AL: "Turbo decoding with unequal error protection applied to GSM speech" GLOBECOM. IEEE GLOBAL TELECOMMUNICATIONS CONFERENCE AND EXHIBITION, NEW YORK, NY, US, no. 3, 18 November 1996 (1996-11-18), pages 2044-2048, XP002133421 *
See also references of WO03107539A1 *

Also Published As

Publication number Publication date
EP1514358A4 (en) 2005-11-23
AU2003240181A1 (en) 2003-12-31
US7610543B2 (en) 2009-10-27
US20040039985A1 (en) 2004-02-26
WO2003107539A1 (en) 2003-12-24
AU2003240181A8 (en) 2003-12-31

Similar Documents

Publication Publication Date Title
EP1422900B1 (en) Receiver and receiving method for cdma communication system
KR100554322B1 (en) Convolutional decoding with the ending state decided by crc bits placed inside multiple coding bursts
WO2018064587A1 (en) Transport block segmentation for multi-level codes
KR100946872B1 (en) Method and apparatus for code block segmentation in mobile communication system
US20080098273A1 (en) Method and apparatus for encoding and decoding data
AU733218C (en) Method for decreasing the frame error rate in data transmission in the form of data frames
US20070089040A1 (en) Method and apparatus for recovery of particular bits of a frame
EP0494709B1 (en) Signal transmission system with sepatate tree coding for each of the parameters
CA2431698C (en) Method and system for allocating convolutional encoded bits into symbols before modulation
CN101867440A (en) Preprocessing method for segmenting code blocks
WO1999062212A2 (en) Transmission system for transmitting a main signal and an auxiliary signal
KR101429786B1 (en) Method and apparatus for encoding and decoding data
US7610543B2 (en) Method and apparatus for puncturing with unequal error protection in a wireless communication system
EP1000480B1 (en) Transmission system with adaptive channel encoder and decoder
JP4847679B2 (en) Method and communication device for matching data rates in a communication device
JP3824653B2 (en) For example, a method of processing data for transmission over a channel with a variable channel bit rate
KR20030027792A (en) Method of blind transport format detection
EP1000468A2 (en) Transmission system with adaptive channel encoder and decoder
EP1311091A1 (en) Method for transporting real-time data frames comprising at least two bit portions having different relevance; corresponding transmitter and receiver
Yatawara et al. Unequal error protection for ROI coded images over fading channels
JP2002533013A (en) Method and apparatus for transmission encoding or decoding of information structured in a frame
KR100434264B1 (en) parameter determinating Method for downlink rate matching
Ekşim et al. Voice quality enhancement for ETSI digital mobile radio standard using improved FEC scheme
TWI389497B (en) Data stream recovery
GB2379141A (en) Depuncturing a punctured digital signal

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20041105

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL LT LV MK

DAX Request for extension of the european patent (deleted)
RBV Designated contracting states (corrected)

Designated state(s): DE FR GB

A4 Supplementary search report drawn up and despatched

Effective date: 20051007

RIC1 Information provided on ipc code assigned before grant

Ipc: 7H 04L 1/00 B

Ipc: 7H 03M 13/35 B

Ipc: 7H 03M 13/00 B

Ipc: 7H 03M 13/03 A

17Q First examination report despatched

Effective date: 20060125

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20130103