Tail-Biting Convolutional Decoding With Two-Pass State Correction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing decoding methods for tail-biting convolutional codes in communication systems, such as those used in WiMAX and OFDMA, are too complex and consume excessive computational resources, making them unsuitable for real-time applications and efficient error protection in wireless communication systems.

Innovation Solution

A Search Depth Viterbi Algorithm (SDVA) is introduced, which reduces the complexity by performing the Viterbi algorithm only one or two times over the received encoded block, initializing a correction depth, and iteratively refining the starting state to achieve efficient decoding with lower computational consumption.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If traditional Viterbi algorithm is used for decoding tail-biting convolutional codes, then decoding accuracy is maintained, but computational complexity and memory usage become excessive

Engineering Contradiction:
Improvedecoding accuracyVSAvoidcomputational complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the decoding process into two distinct phases: a first Viterbi algorithm execution that processes the entire received block to identify a candidate starting state, and a second Viterbi algorithm execution that uses this candidate state to refine the decoding. This segmentation allows the system to maintain decoding accuracy while reducing overall computational complexity by focusing intensive processing on a narrowed search space.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary action by executing the first Viterbi algorithm pass before the second pass to identify a candidate starting state. This preliminary execution provides crucial information that guides the subsequent decoding process, allowing the second Viterbi algorithm to operate with reduced complexity while maintaining accuracy. The candidate starting state identified in advance enables the second pass to focus computational resources efficiently.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If traditional Viterbi algorithm is used for decoding tail-biting convolutional codes, then error protection performance is maintained, but memory consumption becomes excessive

Engineering Contradiction:
Improveerror protection performanceVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent divides the decoding process into two memory-efficient passes. The first pass identifies a candidate starting state with reduced memory requirements by processing the entire block once. The second pass then uses this candidate state to perform refined decoding with similarly reduced memory usage. This segmentation prevents the need to maintain all possible state paths in memory simultaneously, thus reducing memory consumption while preserving error protection performance.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The preliminary execution of the first Viterbi algorithm pass identifies a candidate starting state that guides the second pass. This preliminary action allows the system to discard most state path information after the first pass, keeping only the candidate state, thereby significantly reducing memory requirements for the second pass while maintaining the ability to correct errors effectively.

Inventive Principle:
Principle #10Preliminary action

3Measurement precision

If multiple Viterbi algorithm executions are performed to find the correct starting state, then decoding accuracy improves, but processing time increases

Engineering Contradiction:
Improvedecoding accuracyVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs a preliminary Viterbi algorithm execution to identify a candidate starting state before performing the final decoding pass. This preliminary action is optimized to quickly narrow down the search space, ensuring that the subsequent final pass can be executed efficiently. By structuring the multiple executions in this preliminary-then-final sequence, the patent minimizes total processing time while maintaining decoding accuracy.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent extracts and identifies a candidate starting state from the first Viterbi algorithm execution, separating this identification step from the final decoding process. By extracting this关键 information early and using it to guide the second pass, the system avoids performing full multiple executions, thereby reducing processing time while maintaining the accuracy benefits of multiple passes.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentEP1841116B1Decoding method for tail-biting convolutional codes using a search-depth Viterbi algorithm
Publication Date: 2011.12.14 STMICROELECTRONICS BEIJING R& D
  • EP1841116B1 patent drawingFigure 1
  • EP1841116B1 patent drawingFigure 2
  • EP1841116B1 patent drawingFigure 3

AI summary

A method for decoding tail-biting convolutional codes. The method includes initializing a correction depth, selecting a first starting state from a set of encoding states, and initializing a metric value for the selected starting state as zero and the other states as infinity. The input bit stream is read and a Search Depth Viterbi algorithm (SDVA) is performed to determine path metrics and identify a minimum-metric path. The ending state for the minimum-metric path is determined and the output for this ending state is identified as "previous output." A second starting state is set to the ending state of the minimum-metric path, and symbols equal to the correction depth from the previous output are read. The SDVA is performed on the second set of read symbols to generate a corrected output. A decoded output is generated by replacing symbols at the beginning of the previous output with the corrected output.