TURBO DECODER METRICS INITIALIZATION
Disclosed are various embodiments that provide turbo decoding implemented as at least a portion of baseband processing circuitry. A turbo decoder may obtain a data block associated with a transmission time interval, the data block comprising a sequence of bits, the data block being encoded according to a coding rate. An alpha operation is performed on the data block for a first decoding iteration to generate first alpha decode data, the alpha operation for the first decoding iteration being performed continuously. An alpha operation is performed on the data block for a second decoding iteration to generate second alpha decode data, the alpha operation for the second decoding iteration being performed according to a set of alpha evaluation windows. The initialization of the alpha windows during the second alpha decode may be derived from the alpha state data that is stored in memory from the first alpha decode.
Latest BROADCOM CORPORATION Patents:
This application claims priority to, and the benefit of, U.S. Provisional patent application entitled “CELLULAR BASEBAND PROCESSING,” having Ser. No. 61/565,864, filed on Dec. 1, 2011, and U.S. Provisional patent application entitled “CELLULAR BASEBAND PROCESSING,” having Ser. No. 61/568,868, filed on Dec. 9, 2011, both of which are incorporated by reference in their entirety.
BACKGROUNDCellular wireless communication technology involves many wireless mobile devices communicating over a cellular network through base stations. For a wireless mobile device communicating in a cellular network, various channel conditions may affect the quality of the wireless signal received at the wireless mobile device. Wireless signals may be encoded and redundantly transmitted to a wireless mobile device to address varying channel conditions. Accordingly, wireless mobile devices may be equipped to decode the encoded wireless signals transmitted over the cellular network. The decoding process requires resources, such as memory and computing resources.
Many aspects of the present disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
The present disclosure relates to performing a turbo decoding process on data received in a wireless receiver system. The turbo decoding process may involve performing complete decoding of a data block for multiple times, each time constituting a decoding iteration. Each iteration involves completely decoding the data block by implementing an alpha operation and beta operation. Alpha operations and/or beta operations may be implemented as either a continuous process or as a windowed process.
Various embodiments of the present disclosure are directed to alternating between a continuous process and a windowed process for the alpha operations as well as alternating between a continuous process and a windowed process for the beta operations. Furthermore, state value data derived from a current iteration may be used to initialize state value data for subsequent iteration. As at least one benefit of the subject matter in the present disclosure, processing resources and or memory resources may be reduced or otherwise minimized.
With reference to
The antenna 107 may receive inbound wireless signals transmitted from a remote device such as, for example, a base station. The base station may comprise a portion of a remote transmitter system. The receiver filter module 104 is communicatively coupled to the antenna such that the receiver filter module 104 filters out frequencies to facilitate wireless communication. The LNA 111 receives the filtered wireless signal and amplifies this signal to produce an amplified inbound wireless signal. The LNA 111 provides the amplified inbound wireless signal to the down conversion module 114 which produces a low intermediate frequency (IF) signal or baseband signal. For example, the down conversion module 114 may use a local oscillator to down convert the amplified inbound wireless signal. The filtering/gain module 116 may adjust the gain and/or filter the IF or baseband signal. The ADC 119 may format the IF or baseband signal to the digital domain. The ADC 119 produces a digital signal that contains the information expressed by the inbound wireless signal.
The baseband processing circuitry 123 demodulates, demaps, descrambles, and/or decodes the digital signal to recapture the information expressed in the inbound wireless signal in accordance with a wireless communication standard or standards used in the receiver system 100. In various embodiments, the baseband processing circuitry 123 is implemented as at least a portion of a microprocessor. The baseband processing circuitry 123 may be implemented using one or more circuits, one or more microprocessors, application specific integrated circuits, dedicated hardware, digital signal processors, microcomputers, central processing units, field programmable gate arrays, programmable logic devices, state machines, or any combination thereof. In yet other embodiments, the baseband processing circuitry 123 may include one or more software modules executable within one or more processing circuits. The baseband processing circuitry 123 may further include memory configured to store instructions and/or code that causes the baseband processing circuitry 123 to execute data communication functions.
The baseband processing circuitry 123 may comprise a turbo decoder module 139, memory, and any other component or module for facilitating the functionality of the baseband processing circuitry 123.
The turbo decoder module 139 is configured to process data blocks. A data block may express information received from the antenna 107, where the information is formatted as a sequence of bits in the digital domain. A data block may be associated with data received during a transmission time interval (TTI). A data block may represent all the data received for a given TTI or a portion of the data received for a given TTI. The size of the data block may be dictated by one or more wireless protocols that facilitate data communication of the receiver system 100.
A data block may be encoded according to a number of turbo encoding protocols. For example, a data block may be encoded according to a number of finite states. Decoding such a data block may require performing a number of decoding iterations based on the number of finite states used in the encoding process. As another example, each data block may be associated with a particular coding rate. The coding rate indicates the amount of coding used to encode a particular data block. For example, a high coding rate may indicate that a large number of parity bits were punctured after encoding a particular data block. High coding rates may be used in response to good signal conditions to provide higher throughput. To this end, a receiver system 100 that receives a data block associated with a high coding rate may be required to perform decoding operations that require more processing resources.
In various embodiments, the turbo decoder module 139 is configured to perform a Bahl, Cocke, Jelinek, Raviv (BCJR) algorithm for decoding the data block. The turbo decoder module 139 may perform forward probabilities (alpha) operations and backward probabilities (beta) operations on each processed on a data block. Alpha operations are performed in order that corresponds to the order of sequence of bits starting from a beginning bit of the data block to an ending bit of the data block. Beta operations are performed in an order that corresponds to a reverse direction with respect to the sequence of bits of the data block. That is to say, the beta operation begins with an ending bit of the data block and ends with a beginning bit of the data block.
A complete decoding operation performed by the turbo decoder module 139 comprises performing an alpha operation and a beta operation on the entire data block. Furthermore, the turbo decoder module 139 may be configured to perform a number of decoding iterations on the data block. Each iteration is a complete decoding operation. To execute a full decoding operation, a decoding iteration is divided into a first half-iteration operation and a second half-iteration operation. The first half-iteration operation may be implemented by operating on received data associated with a first constituent encoder and the second half-iteration operation may be implemented by operating on received data associated with a second constituent encoder. The number of decoding iterations performed by the turbo decoder module 139 may correlate with the quality of the radio channel.
In response to performing a decoding iteration, the results of alpha operation and the results of the beta operations are combined to generate likelihood data for facilitating error detection. For example, likelihood data may be log likelihood ratio (LLR) data. The likelihood data effectively allows a turbo decoder module 139 to make a best guess of the data intended to be transmitted to the receiver system 100 based on the data block that was actually received by the receiver system 100.
The turbo decoder module 139 may comprise an error detection module. In various embodiments, the error detection module is configured to perform a cyclic redundancy check (CRC) on a decoded data block data such as, for example, LLR data. A CRC operation may be performed to determine whether a retransmission of the data block is required or whether new, subsequent data block is to be transmitted to the receiver system 100. For example, if the CRC is passed, new data represented in a subsequent TTI is processed. However, of the CRC is failed, then data represented by the current TTI may be retransmitted and analyzed by the baseband processing circuitry 123. In various embodiments, the receiver system 100 continues to request retransmissions until a maximum number of CRC failures occur.
The baseband processing circuitry 123 comprises memory 146. The memory 146 may be configured to store a data block subject to turbo decoding by a turbo decoder module 139. Furthermore, the memory 146 may be configured to store the results of alpha and beta operations, alpha and beta state values, LLR calculations, or any other output data generated by the turbo decoder module 139. To this end, the turbo decoder module 139 is communicatively coupled to the memory 146 to facilitate various read/write operations in the execution of turbo decoding processes.
Turning now to
The non-limiting example of
The beta operation 217 depicted in the non-limiting example
In various embodiments, the size of each evaluation window 227 is a fixed length in terms of a number of bits. For example, if the evaluation window 227 as a length of 100 bits and then the first evaluation window 227 of the beta operation 217 begins with bit number 99 and ends with bit number zero. The next evaluation window 227 begins with bit number 199 and ends with bit number 100. The last evaluation window 227 has a length of a remaining number of bits to complete the processing of the data block 209.
When implementing a windowed beta operation 217, each evaluation window 227 may need to be initialized with an initial state value. In the non-limiting example of
While
Moving to
For example,
Each decoding iteration 307 includes performing an alpha operation 214 and a beta operation 217 on the data block 209. For example, the first decoding iteration 307a includes a first alpha operation 214a and a first beta operation 217a. In the non-limiting example of
In various embodiments of the present disclosure, alpha operations 214a, c are performed continuously for even decoding iterations 307a, c and alpha operations 214b, d are performed discontinuously using evaluation windows 227 for odd decoding iterations 307b, d. Furthermore, beta operations 217b, d are performed continuously for odd decoding iterations 307b, d and beta operations 217a, c are performed discontinuously using evaluation windows 227 for even decoding iterations 307a, c. To this end, the use of continuous alpha operations 214a, c and discontinuous alpha operations 214b, d alternate for each decoding iteration 307a-d. And, the use of continuous beta operations 217b, d and discontinuous beta operations 217a, c alternate for each decoding iteration 307a-d.
In various embodiments of the present disclosure, the performance of windowed alpha operations 214b-d and windowed beta operations 217a, c on the data block 209 excludes the use of a preceding training window 233 (
For example, for the first decoding iteration 307a, each beta evaluation window 227 is initialized according to a default state value 341. In various embodiments, the default state value 341 is a constant value used to initialize each evaluation window 227 of a beta operation 217a of the first decoding iteration 307a. In this respect, the default state value 341 is a predetermined value used to initialize an evaluation window 227.
In various embodiments of the present disclosure, decoding iterations 307b-d, subsequent to the first decoding iteration 307a, may use windowed alpha operations 214b, d or windowed beta operations 217c with evaluation windows 227 that are initialized according to state values derived from previous decoding iterations 307a-c. For example, alpha state values 343 associated with the continuous alpha operation 214a of the first decoding iteration 307a may be used to initialize the evaluation windows 227 of the windowed alpha operation 214b of the second decoding iteration 307b. Beta state values 346 associated with the continuous beta operation 217b of the second decoding iteration 307b may be used to initialize the evaluation windows 227 of the windowed beta operation 217c of the third decoding iteration 307c. Alpha state values 349 associated with the continuous alpha operation 214c of the third decoding iteration 307c may be used to initialize the evaluation windows 227 of the windowed alpha operation 214d of the fourth decoding iteration 307d.
In various embodiments of the present disclosure, the turbo decoder module 139 is configured to determine state value data 343, 346, 349 by indexing the decoding results derived from the continuous alpha operations 209a-c or continuous beta operations 217b, d. For example, in the first decoding iteration 307a, the turbo decoder module 139 identifies a set of positions associated with performing the continuous alpha operation 214a. Each position in the set of positions corresponds to a start point of a respective evaluation window 227 of the windowed alpha operation 214b of the following decoding iteration 307b. Each position is indexed in order to identify a set of alpha state values 343. A position of a particular state value 343, 346, 349 may be expressed in terms of a bit number associated with the sequence of bits of a particular data block 209. Thus, the start position of each evaluation window 227 corresponds to a particular bit position of the sequence of bits of the data block 209.
Each state value 343, 346, 349 may be stored as state value data 343, 346, 349 in memory 146 (
In various embodiments of the present disclosure, for a particular evaluation window 227, decode data generated from a continuous alpha operation 214a, c is stored in a memory 146. This alpha decode data associated with the particular evaluation window 227 is combined with corresponding decode data generated from a windowed beta operation 217a, c to generate log likelihood ratio data associated with the particular window. Moreover, the beta decode data associated with the particular evaluation window 227 is not stored in the memory 146. Rather, the beta decode data is combined with the stored alpha decode data “on the fly.” That is to say, only results from the continuous operation are stored in the memory 146.
Furthermore, it is sufficient for the size of the memory 146 to be large enough to store decode data associated with the execution of a single evaluation window process. In various embodiments, the memory 146 is cleared of decode data associated with a current evaluation window 227 to provide memory capacity for processing a portion of the data block 209 associated with the next evaluation window 227.
Similarly, for a particular evaluation window 227, decode data generated from a continuous beta operation 217b, d is stored in a memory 146. This beta decode data associated with the particular evaluation window 227 is combined with corresponding decode data generated from a windowed alpha operation 214b, d to generate log likelihood ratio data associated with the particular window.
Although the non-limiting example of
The non-limiting example of
In various embodiments of the present disclosure, the windowed beta operations 217a, c of the first decoding iteration 307a and third decoding iteration 307c are performed using evaluation windows 227 that are ordered according to a direction that correlates with the direction of the sequence of bits of the data block 209. That is to say, the evaluation windows 227 of the beta operations 217a,c slide from the beginning of the data block 209 to the end of the data block 209.
In various embodiments of the present disclosure, the windowed alpha operations 214b, d of the second decoding iteration 307b in the fourth decoding iteration 307d are performed using evaluation windows 227 that are ordered according to a direction that is reverse with respect to the sequence of bits of the data block 209. In this respect, the evaluation windows 227 of the alpha operations 214b, d slide from the end of the data block 209 the beginning of a data block 209.
Turning now to
Beginning with reference number 403, the baseband processing circuitry 123 obtains a data block such as, for example, the data block 209 of
At reference number 406, the baseband processing circuitry 123 performs a first decoding iteration on the data block 209. The first decoding iteration 307 (
At reference number 409, the baseband processing circuitry 123 stores alpha state values 343, 349 (
At reference number 412, the baseband processing circuitry 123 initializes each beta evaluation window 227. In various embodiments of the present disclosure, the initialization of each beta evaluation window 227 is based on a default state value. For example, the default state value may be a constant value used for each of the beta evaluation windows 227 for the even decoding iteration 307. To this end, the beta operation 217 of the even decoding iteration 307 excludes the use of training windows 233. At reference number 415, the baseband processing circuitry 123 performs a beta operation 217 (
At reference number 418, the baseband processing circuitry 123 stores the results generated from performing the alpha operation 214 and/or the beta operation 217. These results may be stored in memory 146. Furthermore, the results generated from performing the alpha operation 214 and performing the beta operation 217 may be combined or otherwise summed together to generate likelihood data such as, for example, log likelihood ratio data (LLR). The LLR may indicate a likelihood that a particular bit in the sequence of bits of the data block 209 expresses a binary one or a binary zero. Thus, the baseband processing circuitry 123 completes a full decoding iteration 307.
At reference number 421, the baseband processing circuitry 123 performs a beta operation 217 for the current, odd decoding iteration 307. The beta operation 217 is performed continuously or otherwise without the use of evaluation windows 227. Thus, the beta operation 217 is performed in a manner that is different than the beta operation 217 of the previous decoding iteration 307. Furthermore, the beta operation 217 of the odd decoding iteration 307 is performed in a manner that is different than the alpha operation 214 of the same odd decoding iteration 307. At reference number 424, the baseband processing circuitry 123 stores beta state values 346 (
At reference number 427, the baseband processing circuitry 123 initializes each alpha evaluation window 227 using the alpha state values 343, 349 derived from the previous decoding iteration 307. Each alpha evaluation window 227 is initialized with a corresponding alpha state value 343, 349 that corresponds to the starting position of the alpha evaluation window 227. At reference number 430, the baseband processing circuitry 123 continues to the next decoding iteration 307. Specifically, an alpha operation 214 for the odd decoding iteration 307 is performed on the data block 209. Moreover, the alpha operation 214 for the odd decoding iteration 307 uses alpha evaluation windows 227 such that the alpha operation 214 is performed discontinuously. To this end, the alpha operation 214 is performed in a manner that is different than the alpha operation 214 of the previous decoding iteration 307.
In reference number 433, the baseband processing circuitry 123 stores the results generated from performing the alpha operation 214 and/or the beta operation 217 of the odd decoding iteration 307. These results may be stored in memory 146. Furthermore, the results generated from performing the alpha operation 214 and performing the beta operation 217 of the odd decoding iteration 307 may be combined or otherwise summed together to generate likelihood data. The odd decoding iteration 307 is then complete.
At reference number 436, the baseband processing circuitry 123 determines whether all decoding iterations 307 are complete. All decoding 307 iterations are complete when a predetermined number of decoding iterations are performed on the data block 209. If additional decoding iterations 307 are required, the baseband processing circuitry 123 continues to perform alpha operations 214 and beta operations 217 by initializing the alpha operation 214 or the beta operation 217 based on the state values 343, 346, 349 derived from the previous decoding iteration 307.
When all decoding iterations 307 are performed on the data block 209 then, at reference number 439, the baseband processing circuitry 123 performs an error detection operation on the decoding results of the turbo decoder module 139. For example, the baseband processing circuitry 123 may perform a CRC or any other error detection check on the decoder result. The decoder result expresses the turbo decoder module's 139 best guess of the information expressed in the data block 209.
The baseband processing circuitry 123 implemented in the receiver system 100 (
The flowchart of
Although the flowchart of
Also, any logic or application described herein, including the baseband processing circuitry 123 that comprises software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as, for example, a processor in a computer system or other system. In this sense, the logic may comprise, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system. In the context of the present disclosure, a “computer-readable medium” can be any medium that can contain, store, or maintain the logic or application described herein for use by or in connection with the instruction execution system.
The computer-readable medium can comprise any one of many physical media such as, for example, magnetic, optical, or semiconductor media. More specific examples of a suitable computer-readable medium would include, but are not limited to, magnetic tapes, magnetic floppy diskettes, magnetic hard drives, memory cards, solid-state drives, USB flash drives, or optical discs. Also, the computer-readable medium may be a random access memory (RAM) including, for example, static random access memory (SRAM) and dynamic random access memory (DRAM), or magnetic random access memory (MRAM). In addition, the computer-readable medium may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other type of memory device.
It should be emphasized that the above-described embodiments of the present disclosure are merely possible examples of implementations set forth for a clear understanding of the principles of the disclosure. Many variations and modifications may be made to the above-described embodiment(s) without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.
Claims
1. A method comprising:
- obtaining a data block associated with a transmission time interval, the data block comprising a sequence of bits, the data block being encoded according to a coding rate;
- performing on the data block an alpha operation for a first decoding iteration to generate first alpha decode data, the alpha operation for the first decoding iteration being performed continuously; and
- performing on the data block an alpha operation for a second decoding iteration to generate second alpha decode data, the alpha operation for the second decoding iteration being performed according to a set of alpha evaluation windows.
2. The method of claim 1, wherein the alpha operation for the second decoding iteration comprises ordering the set of alpha evaluation windows according to a direction that is reversed with respect to the sequence of bits.
3. The method of claim 1, wherein each evaluation window in the set of alpha evaluation windows corresponds to a respective start position.
4. The method of claim 3, wherein performing the alpha operation for the first decoding iteration comprises storing an alpha state values for each respective start position, wherein each evaluation window corresponds to an alpha state value.
5. The method of claim 4, wherein performing the alpha operation for the second decoding iteration comprises initializing each evaluation window according to the corresponding alpha state value.
6. The method of claim 1, further comprising:
- performing on the data block a beta operation for the first decoding iteration to generate first beta decode data, the beta operation for the first decoding iteration being performed according to a set of beta evaluation windows.
7. The method of claim 6, wherein the beta operation for the first decoding iteration comprises ordering the set of beta evaluation windows according to a direction correlating with the sequence of bits.
8. A system comprising:
- a memory buffer configured to store a data block associated with a transmission time interval; and
- a turbo decoder module in data communication with the memory buffer, the turbo decoder module being configured to: perform complete decode operations on the data block for a predetermined number of iterations, each complete decode operation comprising performing an alpha operation and a beta operation; continuously perform the beta operation for a first iteration; discontinuously perform the beta operation for a second iteration according to a set of beta evaluation windows; and generate likelihood data based at least upon performing a combination of the alpha operations and the beta operations.
9. The system of claim 8, wherein the turbo decoder module is further configured to store beta state values calculated from the first iteration.
10. The system of claim 9, wherein each beta state value corresponds to a start position associated with each beta evaluation window of the second iteration, wherein the turbo decoder module is further configured to initialize each beta evaluation window according to the corresponding beta state value.
11. The system of claim 9, wherein each beta evaluation window excludes a preceding training window configured to initializing the beta evaluation window.
12. The system of claim 8, wherein the turbo decoder module is further configured to discontinuously perform the alpha operation for the first iteration according to a set of alpha evaluation windows.
13. The system of claim 12, wherein the turbo decoder module is further configured to continuously perform the alpha operation for the second iteration.
14. The system of claim 12, wherein each alpha evaluation window of the first iteration is configured to be initialized according to a default state value.
15. A system comprising:
- processing circuitry configured to: obtain a data block associated with a transmission time interval, the data block comprising a sequence of bits; perform on the data block an un-windowed alpha operation for a first decoding iteration; perform on the data block a beta operation for the first decoding iteration according to a set of beta evaluation windows of the first decoding iteration; perform on the data block an un-windowed beta operation for a second decoding iteration; and generate log likelihood data based at least upon the un-windowed alpha operation for the first decoding iteration and the beta operation for the first decoding iteration.
16. The system of claim 15, wherein the processing circuitry is further configured to perform on the data block an alpha operation for the second decoding iteration according to a set of alpha evaluation windows of the second decoding iteration.
17. The system of claim 16, wherein the processing circuitry is further configured to initialize each alpha evaluation window according to state value data generated from the un-windowed alpha operation for the first decoding iteration.
18. The system of claim 15, wherein the processing circuitry is further configured to:
- perform on the data block a beta operation for a third decoding iteration according to a set of beta evaluation windows of the third decoding iteration; and
- initialize each beta evaluation window for the third decoding iteration according to state value data generated from the un-windowed beta operation for the second decoding iteration.
19. The system of claim 18, wherein the processing circuitry is further configured to initialize each beta evaluation window for the first decoding iteration according to a default state value.
20. The system of claim 15, wherein each beta evaluation window excludes a preceding training window configured to initializing the beta evaluation window.
Type: Application
Filed: Sep 21, 2012
Publication Date: Jun 6, 2013
Applicant: BROADCOM CORPORATION (Irvine, CA)
Inventor: BROADCOM CORPORATION (Irvine, CA)
Application Number: 13/624,228
International Classification: H03M 7/00 (20060101);