Patent Description:
Research on a digital wireless communication system has been conducted to overcome various abnormal channel environments including noise. In line with the research, studies have been conducted on various methods to improve speed on signal transmission and reception processing and improve reliability. Among the various methods, a method of transmitting and receiving digital bit information using a more effective modulation and demodulation method is actively being researched.

Also, error-correcting code technology may be used as an effective method to improve communication reliability in the digital communication system. An error occurs when bit information is not received intact at a receiver due to various abnormal communication channel environments including random noise. The error-correcting code technology detects and corrects the error and restores the original bit information desired to be transmitted, thereby improving the communication reliability.

However, a method of interleaving a codeword block is needed to improve the communication reliability in the digital communication system. The interleaving method would enable robust digital communication against an occurrence of an error by interleaving and transmitting a codeword block based, for instance, on a predetermined interleaving depth. <CIT> discloses a system and method for interleaving data in a communication device. The system includes a memory that stores blocks of data to be interleaved. In addition to the memory, the system includes a write module and a read module, each of which is coupled to the memory. The write module is configured to receive a burst of data and write blocks of data from the burst into the memory. The write module is also configured to provide control information to the read logic. The control information includes a rolling burst counter and a burst profile bank identifier for each block. If interleaving is activated, the control information also includes information pertaining to how the read module should interleave the block. If interleaving is not activated, the control information also includes the byte length size of the burst. ; The read module reads blocks of data from memory in either an interleaved fashion or a non-interleaved fashion in accordance with the control information. A block available signal and a block out signal is also provided to determine when a block of data is available to be read from the memory. <CIT> discloses a method for efficient interleaving of variable-length packets. In packet networks, block interleaving of variable-length packets can be inefficient when the interleaver block size is fixed and smaller than the packet size. For certain packet lengths, the remaining number of elements for the last block (i.e., bytes or symbols) can be very low. The method provides a way to calculate the optimal interleaver block sizes for a preselected packet length and a preselected interleaver width. The sizes of blocks are maximized, while their sizes are made nearly equal.

It is the object of the present application to provide a method and apparatus for performing the process of interleaving in an efficient and accurate way.

However, various changes, modifications, and equivalents of the systems, apparatuses and/or methods described herein will be apparent to one of ordinary skill in the art. Also, descriptions of functions and constructions that are well known to one of ordinary skill in the art may be omitted for increased clarity and conciseness.

<FIG> is a block diagram illustrating an example of a configuration of an interleaving depth controlling apparatus <NUM>, in accordance with an embodiment.

When multi-bit modulation and demodulation technology is combined with error-correcting code technology, the interleaving depth controlling apparatus <NUM> is used to control an interleaving depth to maximize reliability.

The multi-bit modulation and demodulation technology processes bit sequences to be one symbol and performs spread spectrum from the one symbol to a code sequence. Through such a multi-bit modulation and demodulation technology, a transmission rate and reliability is improved.

Through the multi-bit modulation and demodulation method, multiple sets of bit information processed to be one symbol are transmitted during a period of time; thus, improving a transmission rate in comparison to a method that transmits a single bit during the same period of transmission time of the one symbol. In addition, the reliability is improved by configuring each symbol to be mapped to a code sequence to have an improved correlation characteristic.

For example, when different bit sequences, for example, [<NUM><NUM>], [<NUM><NUM>], [<NUM><NUM>], and [<NUM><NUM>], having a transmission length of <NUM> are to be transmitted, the bit sequences may be spread to code sequences, for example, [<NUM><NUM><NUM><NUM>], [<NUM> -<NUM><NUM> -<NUM>], [<NUM><NUM> -<NUM> -<NUM>], and [<NUM> -<NUM> -<NUM><NUM>], having a code length of <NUM> to be transmitted.

In addition, the error-correcting code technology detects an occurrence of an error and corrects the error to improve the communication reliability in the digital communication system. Through the error-correcting code technology, original bit information desired to be transmitted is restored, thereby improving the communication reliability.

An error-correcting code is divided into a block code and a convolutional code. The convolutional code is a type of error-correcting code that generates parity symbols via the sliding application of a boolean polynomial function to a data stream. The sliding application represents the convolution of the encoder over the data. The block code is widely used, and encoding is performed in a block unit having a predetermined length. An encoded bit sequence with a predetermined length is formed by adding a parity bit, which is also referred to as a redundant bit, to message bit information with a predetermined length.

For example, a total of n bit sequence blocks are formed and transmitted by adding n-k parity bits corresponding to redundant bits to k message bits corresponding to original bit information desired to be sent.

A bit sequence block is expressed as a (n,k) block code, and a codeword is an n-bit sequence, which is an output of an encoder. The foregoing message bits may not be changed and be transmitted in a form of only the parity bits being added. Such message bits are referred to as a systematic code. The systematic code is an error-correcting code in which the input data is embedded in the encoded output. Systematic codes have the advantage that the parity data can simply be appended to the source block, and receivers do not need to recover the original source symbols if received correctly.

Each error-correcting code may have an error-correcting capability. For example, when one codeword including n bits is received by a receiver, original bit information desired to be transmitted may be completely restored although a maximum number t of error bits occurs due to an abnormal channel environment, such as noise. In such an example, the error-correcting code is referred to as an error-correcting code having a terror correcting capability.

The error-correcting code is transmitted through interleaving signal processing. Interleaving is a method of mixing and transmitting the mixed codewords instead of transmitting the codewords sequentially. Because a maximum number of correctable error bits in a codeword is fixed, error correction is not properly performed without the interleaving when a number of errors greater than the maximum number of correctable error bits occurs between adjacent bits.

For example, when one codeword includes n bits and a number of codewords having the n bits is d, the d codewords areformed to be one interleaving block, and the interleaving are performed on the d*n interleaving blocks. A value of d are an interleaving depth.

Referring to <FIG>, the interleaving depth controlling apparatus <NUM> includes an acquirer <NUM>, a first comparer <NUM>, a second comparer <NUM>, a depth controller <NUM>, an interleaving block determiner <NUM>, and an interleaving performer <NUM>.

The acquirer <NUM> obtains a number (dn) of remaining codewords by performing a modulo operation on an interleaving depth (d) selected to be less than or equal to a maximum interleaving depth (dmcd) and a total number (MB) of all codewords. In one illustrative example, the modulo operation finds the remainder after division of one number by another. Given two positive numbers, a (the dividend) and n (the divisor), a modulo n is the remainder of the Euclidean division of a by n. The maximum interleaving depth is set as a maximum allowable interleaving depth for a system. In an example, the interleaving depth used to perform interleaving is selected within a range of the maximum interleaving depth. In another example, the interleaving depth is selected based on a modulation size, which is a number of bits to be mapped to a single symbol.

In a case of a plurality of modulation sizes, the maximum interleaving depth is set as a largest modulation size among the plurality of modulation sizes. For example, when the plurality of modulation sizes is <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>, the maximum interleaving depth is set as <NUM>. As described in the foregoing, the maximum interleaving depth is set within an allowable range for the system.

The interleaving is performed on all the codewords based on the selected interleaving depth. When the total number of the codewords is an integer multiple of the interleaving depth, the interleaving is performed on all the codewords at the interleaving depth, without controlling the interleaving depth.

However, when the total number of the codewords is not an integer multiple of the interleaving depth, the interleaving depth is not applied to a remaining interleaving block, among interleaving blocks on which the interleaving is performed, in which the remaining codewords are included.

When the interleaving depth is not controlled, the interleaving is not performed on the remaining codewords or the interleaving is performed using a zero-padded codeword. Thus, the interleaving is not effective in terms of a transmission rate and reliability. Accordingly, the remaining codewords need to be obtained by performing the modulo operation on a total number of the codewords and the interleaving depth as represented in Equation <NUM>.

When the number of the remaining codewords is not "<NUM>," the first comparer <NUM> compares the total number of the codewords to the interleaving depth. As described in the foregoing, when the number of the remaining codewords is not zero, the interleaving depth needs to be controlled.

Conversely, when the number of the remaining codewords is "<NUM>," controlling the interleaving depth is unnecessary and; thus, the interleaving performer <NUM> performs the interleaving with respect to the all codewords by applying the existing interleaving depth.

Thus, the first comparer <NUM> compares the total number of the codewords to the interleaving depth to determine whether to control the interleaving depth.

The depth controller <NUM> controls the interleaving depth based on a result of the comparison performed by the first comparer <NUM>. When the interleaving depth is greater than the total number of the codewords as the result of the comparison, the depth controller <NUM> controls the interleaving depth to be the number of the remaining codewords. The interleaving is then performed by applying, to the all codewords, the interleaving depth controlled to be the number of the remaining codewords.

When the interleaving depth is less than or equal to the total number of the codewords, the second comparer <NUM> compares a sum of the number of the remaining codewords and the interleaving depth to the maximum interleaving depth.

When the interleaving depth is greater than the total number of the codewords, only one interleaving block on which the interleaving is to be performed may exist. Thus, the depth controller <NUM> controls the interleaving depth to be the number of the remaining codewords so that the interleaving depth is suitable for the interleaving block.

Conversely, when the interleaving depth is less than or equal to the total number of the codewords, at least two interleaving blocks on which the interleaving is to be performed exist. Thus, the depth controller <NUM> controls the interleaving depth differently based on a result of comparing the sum of the number of the remaining codewords and the interleaving depth to the maximum interleaving depth by the second comparer <NUM>.

When the interleaving depth is greater than the total number of the codewords, the interleaving block determiner <NUM> determines all of the codewords to be one interleaving block.

Conversely, when the interleaving depth is less than or equal to the total number of the codewords, the interleaving block determiner <NUM> determines an interleaving block based on a result of comparing the interleaving depth, or the sum of the number of the remaining codewords and the interleaving depth, to the maximum interleaving depth.

When the sum of the number of the remaining codewords and the interleaving depth is less than or equal to the maximum interleaving depth, the depth controller <NUM> controls an interleaving depth to be applied to a last interleaving block to be the sum of the number of the remaining codewords and the interleaving depth.

When the sum of the number of the remaining codewords and the interleaving depth is less than or equal to the maximum interleaving depth, the interleaving block determiner <NUM> determines the remaining codewords and codewords corresponding to the interleaving depth to be the last interleaving block prior to being controlled. The codewords corresponding to the interleaving depth prior to being controlled are codewords immediately prior to the remaining codewords. Because the interleaving depth of the last interleaving block is less than or equal to the maximum interleaving depth, the interleaving depth controlling apparatus <NUM> performs the interleaving on the last interleaving block by controlling the interleaving depth to be the sum of the number of the remaining codewords and the interleaving depth.

When the sum of the number of the remaining codewords and the interleaving depth is greater than the maximum interleaving depth, the interleaving block determiner <NUM> determines the remaining codewords to be two interleaving blocks. The two determined interleaving blocks correspond to a last portion of the all codewords and; thus, the two interleaving blocks will be hereinafter referred to as two last interleaving blocks.

When the sum of the number of the remaining codewords and the interleaving depth is greater than the maximum interleaving depth, the depth controller <NUM> controls an interleaving depth to be applied to each of the last two interleaving blocks based on the sum of the number of the remaining codewords and the interleaving depth.

Also, when the sum of the number of the remaining codewords and the interleaving depth is greater than the maximum interleaving depth, forming one interleaving block and performing the interleaving on the interleaving block is not possible. As a result, the block needs to be divided.

In such a case, the depth controller <NUM> controls an interleaving depth to be applied to each of the last two interleaving blocks to be a smallest integer among integers greater than or equal to an average between the number of the remaining codewords and the interleaving depth. The depth controller <NUM> also controls the interleaving depth to be a greatest integer among integers less than or equal to the average between the number of the remaining codewords and the interleaving depth.

For example, when an interleaving depth is <NUM>, a number of remaining codewords is <NUM>, and a maximum interleaving depth is <NUM>, an average between the number of the remaining codewords and the interleaving depth is <NUM>. In such an example, the interleaving depth to be applied to each of the last two interleaving blocks is controlled to be <NUM>.

For another example, when an interleaving depth is <NUM>, a number of remaining codewords is <NUM>, and a maximum interleaving depth is <NUM>, an average between the number of the remaining codewords and the interleaving depth may be <NUM>. In such an example, the interleaving depth to be applied to each of the last two interleaving blocks is controlled to be <NUM> and <NUM>, respectively.

As described in the foregoing, the interleaving depth controlling apparatus <NUM> utilizes the maximum allowable interleaving depth. However, increasing the interleaving depth to be unnecessarily high may result in an increase in time delay between transmission and reception.

In addition, the interleaving depth controlling apparatus <NUM> effectively prevents an interleaving depth of an interleaving block from excessively decreasing, compared to an initially set interleaving depth, due to the remaining codewords. Thus, a decrease in a packet error rate is overcome.

Table <NUM> provides a description of operations of the interleaving method.

In Table <NUM>, dR is mod(MB, d) (dR=mod(MB, d),<MAT> is a smallest integer among integers greater than or equal to "x", and " <MAT>" is a greatest integer among integers less than or equal to "x". For example, based on the interleaving procedure described in Table <NUM>, when MB is <NUM>, d is <NUM>, and dmax is <NUM>, dR becomes <NUM> and NB becomes <NUM>. Thus, an interleaving depth is set to be "<NUM>" for all the initial three interleaving blocks, and an interleaving depth is set to be "<NUM>," which is a sum (d+ dR) of "d" and "dR ," for a last one interleaving block, and the interleaving is then performed.

Table <NUM> indicates interleaving depth values in each interleaving block expressed as row vectors, and simplified as interleaving depth sequences.

In Table <NUM>, "ones(m)" denotes an all-one row vector having m elements.

For example, based on the interleaving depth sequences described in Table <NUM>, when an interleaving depth sequence is "[d · ones(NB-<NUM>), d+ dR]," an interleaving depth "d" is applied to initial NB-<NUM> interleaving blocks, and an interleaving depth "d+dR" is applied to a last interleaving block.

The interleaving performer <NUM> applies the interleaving depth and the controlled interleaving depth to perform the interleaving with respect to at least one codeword.

The foregoing description of the interleaving depth controlling apparatus <NUM> is provided for the interleaving to be performed from a transmitting end. However, the interleaving may not be limited thereto. At a receiving end, deinterleaving corresponding to signal processing opposite to the interleaving performed at the transmitting end may be performed. A configuration of a deinterleaving depth controlling apparatus and method at the receiving end may be same or substantially the same to a configuration of the interleaving depth controlling apparatus <NUM> and method at the transmitting end.

<FIG> is a flowchart illustrating an example of an interleaving depth controlling method, in accordance with an embodiment.

Referring to <FIG>, in operation <NUM>, the method sets or defines an interleaving depth "d" and a maximum interleaving depth "dmax". The method sets the maximum interleaving depth to be a maximum allowable interleaving depth for a system. In an example, the method sets the interleaving depth used to perform interleaving within a range of the maximum interleaving depth. In a case of a plurality of modulation sizes, the method sets the maximum interleaving depth as a largest modulation size among the plurality of modulation sizes. For example, when the plurality of modulation sizes is <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>, the method sets or defines the maximum interleaving depth to be <NUM>.

In another example, the method sets or defines the interleaving depth based on a modulation size, which is a number of bits to be mapped to a single symbol. The interleaving depth to be set prior to the interleaving is defined as a basic interleaving depth.

In operation <NUM>, the method obtains a number "dR" of remaining codewords by performing a modulo operation on the interleaving depth and a total number "MR" of all codewords. When the number of the remaining codewords is zero, the method performs the interleaving by applying the interleaving depth to the all codewords, without controlling the set interleaving depth.

However, when the number of the remaining codewords is not zero, the interleaving may not be effectively performed using the set interleaving depth for the remaining codewords. The remaining codewords are included in a last interleaving block of interleaving blocks on which the interleaving is to be performed. When the interleaving is not performed with respect to the remaining codewords, a packet error may occur with respect to the remaining codewords. Also, when the interleaving is performed using a zero-padded codeword, insignificant bit information may need to be sent. As a result, a transmission rate may be adversely affected.

Thus, the method controls the interleaving depth by obtaining the number of the remaining codewords through the execution of the modulo operation on the total number of the codewords and the interleaving depth. For an interleaving block in which the remaining codewords are included, the method controls the interleaving depth within the range of the maximum interleaving depth. Thus, the method performs the interleaving for the all codewords by applying the interleaving depth controlled to be the number of the remaining codewords.

In operation <NUM>, the method determines whether the obtained number of the remaining codewords is zero. The method makes a determination of whether to control the interleaving depth based on whether the number of the remaining codewords is zero. As described in the foregoing, when the number of the remaining codewords is zero, the interleaving depth does not need to be controlled, and the interleaving isperformed with respect to the all codewords by applying the interleaving depth. Conversely, when the number of the remaining codewords is not zero, the interleaving depth is controlled with respect to an interleaving block including the remaining codewords.

In operation <NUM>, when the number of the remaining codewords is <NUM>, the method applies the interleaving depth to the all codewords. As described in the foregoing, when the number of the remaining codewords is zero, the total number of the codewords arean integer multiple of the interleaving depth. Thus, all of the codewords are determined to be n*d interleaving blocks. The interleaving is then performed by applying the interleaving depth to each interleaving block.

In operation <NUM>, when the number of the remaining codewords is not zero, the method compares the interleaving depth to the total number of the codewords. As described in the foregoing, when the number of the remaining codewords is not zero, the method controls the interleaving depth with respect to a remaining interleaving block including the remaining codewords.

The method determines whether a number of interleaving blocks is one or at least two by comparing the interleaving depth to the total number of the codewords. The method performs the comparison as a standard for controlling the interleaving depth.

In operation <NUM>, when the interleaving depth is greater than the total number of the codewords, the method controls the interleaving depth to be the number of the remaining codewords. When the interleaving depth is greater than the total number of the codewords, only one interleaving block exists. In such a case, the total number of the codewords are equal to the number of the remaining codewords. As a result, applying the interleaving depth won't be effective to perform the interleaving.

Accordingly, the method controls the interleaving depth to be the number of the remaining codewords and performs the interleaving with respect to the all codewords by applying the controlled interleaving depth.

In operation <NUM>, when the interleaving depth is less than or equal to the total number of the codewords, the method compares a sum of the interleaving depth and the number of the remaining codewords to the maximum interleaving depth. When the interleaving depth is less than or equal to the total number of the codewords, the method determines that at least two interleaving blocks on which the interleaving is to be performed exists.

In such a case, the method compares the sum of the interleaving depth and the number of the remaining codewords to the maximum interleaving depth in order to determine whether to incorporate, into one interleaving block, the remaining interleaving block, which includes the remaining codewords, and an interleaving block to which the interleaving depth prior to the remaining interleaving block is applied.

In operation <NUM>, when the sum of the interleaving depth and the number of the remaining codewords is less than and equal to the maximum interleaving depth, the method controls or determines an interleaving depth to be applied to a last interleaving block to be the sum of the interleaving depth and the number of the remaining codewords.

Although interleaving depth values of the remaining codewords and codewords corresponding to the basic interleaving depth prior to the remaining codewords are combined, the sum of the interleaving depth values may be less than or equal to the maximum interleaving depth. As a result, the interleaving is performed by combining the codewords to be a last one interleaving block.

Thus, the method performs the interleaving by controlling the interleaving depth to be applied to the last interleaving block to be the sum of the interleaving depth and the number of the remaining codewords.

In operation <NUM>, when the sum of the interleaving depth and the number of the remaining codewords is greater than the maximum interleaving depth, the method controls an interleaving depth to be applied to each of last two interleaving blocks based on the sum of the interleaving depth and the number of the remaining codewords.

Although the last two interleaving blocks are combined, the interleaving may not be performed once. Thus, the method controls the interleaving depth to be applied to each of the last two interleaving blocks does not excessively decrease compared to the initially set interleaving depth.

When the sum of the interleaving depth and the number of the remaining codewords is greater than the maximum interleaving depth, the method controls the interleaving depth to be applied to each of the last two interleaving blocks to be a smallest integer among integers greater than or equal to (d+dR)/<NUM> and a greatest integer among integers less than or equal to (d+dR)/<NUM>. In one illustrative example, "(d+dR)/<NUM>" is an average between the number of the remaining codewords and a basic interleaving depth.

Accordingly, in accordance with an illustrative configuration of the method of <FIG>, a decrease in a packet error rate is overcome by preventing a value of the controlled interleaving depth from excessively decreasing compared to a value of the initially set interleaving depth.

<FIG> is a flowchart illustrating an example of a deinterleaving depth controlling method, in accordance with an embodiment.

Referring to <FIG>, in operation <NUM>, the method sets or defines a deinterleaving depth (d) and a maximum deinterleaving depth (dmax). In one illustrative example, the method sets the maximum deinterleaving depth to be a maximum allowable deinterleaving depth for a system. In a case of a plurality of modulation sizes, the method sets the maximum deinterleaving depth as a largest modulation size among the plurality of modulation sizes. In an example, the method sets the deinterleaving depth to perform deinterleaving within a range of the maximum deinterleaving depth. In another example, the method sets the deinterleaving depth by controlling the deinterleaving depth to be equal to an interleaving depth applied to all codewords.

In operation <NUM>, the method obtains a number of remaining codewords (dR) by performing a modulo operation on the deinterleaving depth and a total number of all codewords. When the number of the remaining codewords is zero, the method performs the deinterleaving based on the deinterleaving depth with respect to the all codewords without controlling the set deinterleaving depth.

In operation <NUM>, the method determines whether the obtained number of the remaining codewords is zero. The method determines whether to control the deinterleaving depth based on whether the number of the remaining codewords is zero.

In operation <NUM>, when the number of the remaining codewords is zero, the method defines deinterleaving depth be an initially set deinterleaving depth. When the number of the remaining codewords is zero, the method defines the total number of the codewords to be an integer multiple of the deinterleaving depth, and determines all of the codewords to be an n*d deinterleaving blocks. Thus, the method performs the deinterleaving by applying the deinterleaving depth to each deinterleaving block.

In operation <NUM>, when the number of the remaining codewords is not zero, the method compares the deinterleaving depth to the total number of the codewords. As described in the foregoing, when the number of the remaining codewords is not zero, the method controls the deinterleaving depth with respect to a deinterleaving block including the remaining codewords.

The method determines whether a number of the deinterleaving blocks is one or at least two by comparing the deinterleaving depth to the total number of the codewords. The method uses the comparison as a standard for controlling the deinterleaving depth.

In operation <NUM>, when the deinterleaving depth is greater than the total number of the codewords, the method controls the deinterleaving depth to be the number of the remaining codewords. When the deinterleaving depth is greater than the total number of the codewords, the method determines that only one deinterleaving block exits. In such a case, the total number of the codewords is equal to the number of the remaining codewords and; thus, a deinterleaving block to which the deinterleaving depth is to be applied is not formed.

Thus, the method controls the deinterleaving depth to be the number of the remaining codewords to form one deinterleaving block with respect to the all codewords. The method performs deinterleaving on a deinterleaving block to which the deinterleaving depth controlled to be the number of the remaining codewords is applied.

In operation <NUM>, when the deinterleaving depth is less than or equal to the total number of the codewords, the method compares a sum of the deinterleaving depth and the number of the remaining codewords to the maximum deinterleaving depth. When the deinterleaving depth is less than or equal to the total number of the codewords, at least two deinterleaving blocks on which the deinterleaving is to be performed exist.

In operation <NUM>, when the sum of the deinterleaving depth and the number of the remaining codewords is less than or equal to the maximum deinterleaving depth, the method controls a deinterleaving depth to be applied to a last deinterleaving block to be the sum of the deinterleaving depth and the number of the remaining codewords.

In operation <NUM>, when the sum of the deinterleaving depth and the number of the remaining codewords is greater than the maximum deinterleaving depth, the method controls a deinterleaving depth to be applied to each of last two deinterleaving blocks based on the sum of the deinterleaving depth and the number of the remaining codewords.

When the sum of the deinterleaving depth and the number of the remaining codewords is greater than the maximum deinterleaving depth, the method controls the deinterleaving depth to be applied to each of the last two deinterleaving blocks to be a smallest integer among integers greater than or equal to (d+dR)/<NUM> and a greatest integer among integers less than or equal to (d+dR)/<NUM>. As described in the foregoing, "(d+dR )/<NUM>" is an average between the number of the remaining codewords and a basic deinterleaving depth.

As described in the foregoing, a receiving end performs the deinterleaving corresponding to signal processing opposite to recording and reading data performed by a transmitting end. The deinterleaving depth controlling method performed during the deinterleaving are performed simultaneously with an interleaving depth controlling method.

<FIG> is a flowchart illustrating an example of an interleaving method, in accordance with an embodiment.

Referring to <FIG>, in operation <NUM>, the method selects a first interleaving depth with respect to at least one codeword based on a number of the at least one codewords and a maximum interleaving depth. The first interleaving depth is an interleaving depth to be controlled to perform interleaving on an entirety or a portion of all codewords. A method of selecting the first interleaving depth will be described with reference to <FIG>.

In operation <NUM>, the method interleaves the at least one codeword by applying the selected first interleaving depth. The at least one codeword includes an interleaving block corresponding to the first interleaving depth, and the method performs the interleaving by applying the first interleaving depth corresponding to the interleaving block.

<FIG> is a flowchart illustrating an example of an interleaving depth controlling method in an interleaving method, in accordance with an embodiment.

Referring to <FIG>, in operation <NUM>, the method obtains a number of remaining codewords (ds) resulting from a modulo operation performed on a number of at least one codeword and a basic interleaving depth (d). In an example, the basic interleaving depth is selected within a range of a maximum interleaving depth. In another example, the basic interleaving depth is selected based on a modulation size, which is a number of bits to be mapped to a signal symbol.

In operation <NUM>, the method compares a sum of the basic interleaving depth and the number of the remaining codewords to the maximum interleaving depth. The method determines whether to incorporate into one block, a remaining interleaving block including the remain codewords and an interleaving block prior to the remaining interleaving block by comparing the sum of the basic interleaving depth and the number of the remaining codewords to the maximum interleaving depth.

In operation <NUM>, the method determines an interleaving block irrespective of a result of the comparing performed in operation <NUM>. However, in one configuration, the method determines the interleaving block differently based on the result of the comparing. For example, when the sum of the number of the remaining codewords and the basic interleaving depth is less than or equal to the maximum interleaving depth, the method combines the remaining interleaving block including the remaining codewords with the interleaving block prior to the remaining interleaving block.

Conversely, when the sum of the number of the remaining codewords and the basic interleaving depth is greater than the maximum interleaving depth, the method determines two last interleaving blocks by controlling each interleaving depth of the remaining interleaving block and the interleaving block prior to the remaining interleaving block.

In operation <NUM>, when the sum of the number of the remaining codewords and the basic interleaving depth is less than or equal to the maximum interleaving depth, the method selects a first interleaving depth to be applied to a last interleaving block among interleaving blocks to be the sum of the number of the remaining codewords and the basic interleaving depth.

As described in the foregoing, in one illustrative example, the remaining interleaving block and the interleaving block prior to the remaining interleaving block are combined into the last interleaving block. Thus, to perform interleaving on the last interleaving block, the first interleaving depth is controlled to correspond to the sum of the number of the remaining codewords and the basic interleaving depth.

In operation <NUM>, when the sum of the number of the remaining codewords and the basic interleaving depth is greater than the maximum interleaving depth, the method selects a first interleaving depth to be applied to each of last two interleaving blocks among the interleaving blocks may be selected based on the sum of the number of the remaining codewords and the basic interleaving depth. When a sum of the number of the remaining codewords and a basic interleaving depth is greater than the maximum interleaving depth, the method controls the interleaving depth to be applied to each of the last two interleaving blocks to be a smallest integer among integers greater than or equal to (d-i-dR)/<NUM> and a greatest integer among integers less than or equal to ((l+d,. As described in the foregoing, "(d-i-dR)/<NUM>" may indicate an average between the number of the remaining codewords and the basic interleaving depth.

In such a case, the interleaving is not performed once although the last two interleaving blocks are combined. Thus, the interleaving depth to be applied to each of the last two interleaving blocks is controlled to not be excessively reduced compared to an initially set interleaving depth.

As an example, in a multi-bit modulation and demodulation system, a number of bits to be mapped to a single symbol correspond to a modulation size of <NUM> through <NUM>. In such an example, setting an interleaving depth (d) to be the modulation size is effective and a maximum interleaving depth (dmax) is set to be <NUM>.

Table <NUM> indicates the interleaving depth (d) when a number of remaining codewords ( dR) is not zero and a total number (MB) of all codewords is greater than the interleaving depth (d).

In Table <NUM>, "N/A" indicates nonexistence of an interleaving block in a corresponding order. A method of controlling the interleaving depth by comparing the sum of the number of the remaining codewords and the interleaving depth to the maximum interleaving depth will be further described with reference to <FIG> and <FIG>.

<FIG> is diagram illustrating an example of controlling an interleaving depth when a sum of a number of remaining codewords and the interleaving depth is less than or equal to a maximum interleaving depth, in accordance with an embodiment.

Referring to <FIG>, an interleaving block <NUM> to which an interleaving depth of <NUM> is to be applied and a remaining interleaving block <NUM> are determined for all codewords. The interleaving block <NUM> includes <NUM> rows, and the interleaving depth is applied to perform interleaving on the interleaving block <NUM>.

However, the remaining interleaving block <NUM> includes <NUM> row, less than the interleaving depth of <NUM>. As a result, the interleaving depth is not applied. Thus, the interleaving is not performed to the remaining interleaving block <NUM>. When transmitting the remaining interleaving block <NUM>, a packet error rate of the remaining interleaving block <NUM> increases. Also, when adding two zero-padded codewords to form <NUM> rows and applying the interleaving depth to perform the interleaving, insignificant codewords are transmitted and; thus, a transmission rate decreases.

When the sum of the number of the remaining codewords and the interleaving depth is less than or equal to the maximum interleaving depth, the interleaving depth is controlled to be the sum of the number of the remaining codewords and the interleaving depth.

In the example of <FIG>, the interleaving depth is controlled to be <NUM>, which is the sum of the number of the remaining codewords and the interleaving depth. Thus, the interleaving is performed by forming all of the codewords to be an interleaving block <NUM> having <NUM> rows. When the interleaving depth increases, a time delay may occur. However, a decrease in a packet error rate is overcome.

<FIG> is a diagram illustrating an example of controlling an interleaving depth when a sum of a number of remaining codewords and the interleaving depth is greater than a maximum interleaving depth, in accordance with an embodiment.

In the example of <FIG>, a total number of all codewords is <NUM>, the interleaving depth is <NUM>, and the maximum interleaving depth is <NUM>.

Referring to <FIG>, an interleaving block <NUM> to which the interleaving depth of <NUM> is to be applied and a remaining interleaving block <NUM> are determined for all of the codewords. The interleaving block <NUM> includes <NUM> rows, and the interleaving depth is applied to perform interleaving on the interleaving block <NUM>.

However, the remaining interleaving block <NUM> includes <NUM> row, less than the interleaving depth of <NUM> of the interleaving block <NUM>, and; thus, the interleaving depth is not applied. Thus, the interleaving is not performed for the interleaving block <NUM>. When transmitting the remaining interleaving block <NUM>, a packet error rate of the remaining interleaving block <NUM> may increase. Also, when adding <NUM> zero-padded codewords to form <NUM> rows and applying the interleaving depth to perform the interleaving, insignificant codewords are transmitted and; as a result, a transmission rate decreases.

When the sum of the number of the remaining codewords and the interleaving depth is greater than the maximum interleaving depth, an interleaving depth to be applied to each of the two interleaving blocks <NUM> and <NUM> is controlled to be a smallest integer among integers greater than or equal to an average between the number of the remaining codewords and a basic interleaving depth. Also, the interleaving depth to be applied to each of the two interleaving blocks <NUM> and <NUM> is controlled to be a greatest integer among integers less than or equal to the average between the number of the remaining codewords and the basic interleaving depth.

In the example of <FIG>, the interleaving depth is controlled to be <NUM>, which is the average between the number of the remaining codewords and the interleaving depth. Thus, the interleaving is performed by forming the all codewords to be two interleaving blocks <NUM> and <NUM> having <NUM> rows. An interleaving depth to be applied to each of the two interleaving blocks <NUM> and <NUM> is controlled not to be excessively reduced from an initially set interleaving depth.

Table <NUM> indicates a detailed system of a multi-bit modulation and demodulation method.

In an illustrative example, the ternary on off keying (TOOK) is interchangeably used as a ternary amplitude shift keying (TASK).

In Table <NUM>, "M" indicates a number of bits mapped to a symbol during multi-bit modulation and demodulation. A basic interleaving depth (d) is set to be equal to a value of M. A procedure of signal processing performing interleaving by applying the basic interleaving depth is as follows.

Bit-level interleaving may be performed on encoded data by obtaining a codeword from a Bose Chaudhuri Hocquenghem (BCH) encoder, and bits across codewords are interleaved using an appropriately selected depth. The foregoing procedure is performed to protect a bit error against a symbol error. The interleaving depth is selected based on a modulation size. Table <NUM> indicates interleaving depth sequences obtained by expressing, as a row vector, an interleaving depth value in each interleaving block in a system described with reference to <FIG>, in accordance with an embodiment.

<FIG> is a diagram illustrating an example of an interleaving procedure, in accordance with an embodiment.

For example, in the presence of a data symbol error, bit-level interleaving are used along with a shortened BCH code to allow encoded data to be resilient to a bit error.

When a codeword length is Nshort and an interleaving depth is d, the interleaving is performed as follows.

In one example, d BCH codewords is collected, and each BCH codeword has Nshort bits.

(<NUM>) Write, row-wise, bits of the BCH codewords in a d * Nshort dimensional array <NUM>.

In one embodiment, each bit of the d BCH codewords are written in the d * Nshort dimensional array <NUM>. The d BCH codewords are formed in a single array, which is the d * Nshort dimensional array <NUM>. The d * Nshort dimensional array <NUM> are configured based on the bits of the d BCH codewords.

(<NUM>) Read, column-wise, the d * Nshort dimensional array <NUM> and sequentially output data.

In one example, the bits written in the d * Nshort dimensional array <NUM>, for example, b<NUM>,<NUM>, b<NUM>,<NUM>,. , bd,<NUM>, b<NUM>,<NUM>, b<NUM>,<NUM>,. , bd,<NUM>, b<NUM>,<NUM>,. , bd,Nshort (<NUM>), are sequentially transmitted. The bits sequentially read are transmitted to a receiver.

The units, the acquirer, the comparers, the determiner, the performer, and the controller described herein may be implemented using hardware components. For example, the hardware components may include, but are not limited to, comparators, receivers, transmitters, processors, amplifiers, band-pass filters, audio to digital convertors, and processing devices. A processing device may be implemented using one or more general-purpose or special purpose computers, such as, for example, a processor, a controller and an arithmetic logic unit, a digital signal processor, a microcomputer, a field programmable array, a programmable logic unit, a microprocessor or any other device capable of responding to and executing instructions in a defined manner. The processing device may run an operating system (OS) and one or more software applications that run on the OS. The processing device also may access, store, manipulate, process, and create data in response to execution of the software. For purpose of simplicity, the description of a processing device is used as singular; however, one skilled in the art will appreciated that a processing device may include multiple processing elements and multiple types of processing elements. For example, a processing device may include multiple processors or a processor and a controller. In addition, different processing configurations are possible, such a parallel processors.

Claim 1:
An interleaving depth controlling method for block interleaving a total number of codewords MB, wherein an interleaving depth is a number of codewords forming one interleaving block, comprising:
performing (<NUM>) a modulo operation on an initial interleaving depth d and a total number of codewords MB according to mod(MB, d);
comparing (<NUM>) the total number of the codewords MB to the initial interleaving depth d, when a result of the modulo operation being dR is not "<NUM>";
in response to the initial interleaving depth d being greater than the total number of the codewords MB, applying (<NUM>) the block interleaving with an interleaving depth to a single interleaving block comprising dR codewords,
wherein the interleaving depth is the result of the modulo operation "dR";
in response to the initial interleaving depth d being less than or equal to the total number of the codewords MB,
comparing (<NUM>) a sum of the result of the modulo operation dR and the initial interleaving depth d to a maximum interleaving depth, wherein the initial interleaving depth d is selected to be less than or equal to the maximum interleaving depth;
in response to the sum of the result of the modulo operation dR and the initial interleaving depth d being less than or equal to the maximum interleaving depth,
applying a block interleaving with the initial interleaving depth d to first NB-<NUM> of NB-<NUM> interleaving
blocks, wherein the NB is a smallest integer among integers greater than or equal to the total number of codewords MB divided by the initial interleaving depth d; and
applying (<NUM>) a block interleaving with another interleaving depth to a last interleaving block of the NB-<NUM> interleaving blocks,
the another interleaving depth being a sum of the result of the modulo operation dR and the initial interleaving depth d.