TTCM decoder design
First Claim
1. An apparatus, comprising:
- a first alpha/beta metric calculation functional block that initially processes encoded symbols of a plurality of encoded symbols in a first direction within a block, the first direction extending from a block beginning towards a block middle, to calculate forward metrics (alphas) and selectively stores alpha check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the first direction onto a check point stack, wherein the block includes a plurality of encoded symbols arranged into a plurality of sub-blocks;
wherein the first alpha/beta metric calculation functional block also initially processes the encoded symbols of the plurality of encoded symbols in a second direction within the block, the second direction extending from a block end towards the block middle, to calculate backward metrics (betas) and selectively stores beta check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the second direction;
wherein, when the first alpha/beta metric calculation functional block substantially reaches the block middle when processing in the first direction, the first alpha/beta metric calculation functional block pushes each alpha value onto an alpha stack;
wherein, when the first alpha/beta metric calculation functional block substantially reaches the block middle when processing in the second direction, the first alpha/beta metric calculation functional block pushes each beta value onto a beta stack;
wherein, when the first alpha/beta metric calculation functional block reaches the block middle after processing in the first direction, a second alpha/beta metric calculation functional block skips back to a first sub-block that has been processed in the first direction by the first alpha/beta metric calculation functional block and recalculates alphas for each encoded symbol contained in the first sub-block while the first alpha/beta metric calculation functional block simultaneously calculates betas in the second direction for a sub-block adjacent to the first sub-block;
wherein, when the first alpha/beta metric calculation functional block substantially reaches the block middle after processing in the second direction, the second alpha/beta metric calculation functional block skips back to a second sub-block that has been processed by the first alpha/beta metric calculation functional block in the second direction and re-calculates betas for each encoded symbol contained in the second sub-block while the first alpha/beta metric calculation functional block simultaneously calculates alphas in the first direction for a sub-block adjacent to the second sub-block;
for each encoded symbol for which the second alpha/beta metric calculation functional block calculates a beta in the second direction for the sub-block adjacent to the first sub-block, an extrinsic value calculation functional block pops a corresponding alpha off of the alpha stack and calculates a corresponding soft symbol decision using the most recently corresponding calculated beta and most recently popped alpha; and
for each encoded symbol for which the second alpha/beta metric calculation functional block calculates an alpha in the first direction for the sub-block adjacent to the second sub-block, the extrinsic value calculation functional block pops a corresponding beta off of the beta stack and calculates a corresponding soft symbol decision using the most recently corresponding calculated alpha and most recently popped beta.
4 Assignments
0 Petitions
Accused Products
Abstract
TTCM (Turbo Trellis Coded Modulation) decoder design. The design also adapts to any number of devices that perform decoding of Trellis Code Modulation (TCM) signals. After performing initial symbol processing within a data block to generate a number of check point values, the design selectively re-calculates some forward metrics (alphas) and backward metrics (betas), and the design is able to calculate extrinsic (ext) information for each symbol within the data block successively. The data block is subdivided into a number of sub-blocks that are intelligently processed to enable extremely fast processing. Generally speaking, the design performs initial processing starting from both block ends, and upon approaching the block middle, the design begins to process the block using skip backs to previous sub-blocks. The design employs a great deal of parallel and simultaneously processing to provide for very fast computation of the various values required to decode the block.
-
Citations
30 Claims
-
1. An apparatus, comprising:
-
a first alpha/beta metric calculation functional block that initially processes encoded symbols of a plurality of encoded symbols in a first direction within a block, the first direction extending from a block beginning towards a block middle, to calculate forward metrics (alphas) and selectively stores alpha check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the first direction onto a check point stack, wherein the block includes a plurality of encoded symbols arranged into a plurality of sub-blocks; wherein the first alpha/beta metric calculation functional block also initially processes the encoded symbols of the plurality of encoded symbols in a second direction within the block, the second direction extending from a block end towards the block middle, to calculate backward metrics (betas) and selectively stores beta check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the second direction; wherein, when the first alpha/beta metric calculation functional block substantially reaches the block middle when processing in the first direction, the first alpha/beta metric calculation functional block pushes each alpha value onto an alpha stack; wherein, when the first alpha/beta metric calculation functional block substantially reaches the block middle when processing in the second direction, the first alpha/beta metric calculation functional block pushes each beta value onto a beta stack; wherein, when the first alpha/beta metric calculation functional block reaches the block middle after processing in the first direction, a second alpha/beta metric calculation functional block skips back to a first sub-block that has been processed in the first direction by the first alpha/beta metric calculation functional block and recalculates alphas for each encoded symbol contained in the first sub-block while the first alpha/beta metric calculation functional block simultaneously calculates betas in the second direction for a sub-block adjacent to the first sub-block; wherein, when the first alpha/beta metric calculation functional block substantially reaches the block middle after processing in the second direction, the second alpha/beta metric calculation functional block skips back to a second sub-block that has been processed by the first alpha/beta metric calculation functional block in the second direction and re-calculates betas for each encoded symbol contained in the second sub-block while the first alpha/beta metric calculation functional block simultaneously calculates alphas in the first direction for a sub-block adjacent to the second sub-block; for each encoded symbol for which the second alpha/beta metric calculation functional block calculates a beta in the second direction for the sub-block adjacent to the first sub-block, an extrinsic value calculation functional block pops a corresponding alpha off of the alpha stack and calculates a corresponding soft symbol decision using the most recently corresponding calculated beta and most recently popped alpha; and for each encoded symbol for which the second alpha/beta metric calculation functional block calculates an alpha in the first direction for the sub-block adjacent to the second sub-block, the extrinsic value calculation functional block pops a corresponding beta off of the beta stack and calculates a corresponding soft symbol decision using the most recently corresponding calculated alpha and most recently popped beta. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. An apparatus, comprising:
-
a soft-in soft-out functional block (SISO) that, based on a plurality of metrics, calculates a first plurality of extrinsic values for each encoded symbol of the plurality of encoded symbols; an interleaver/de-interleaver, communicatively coupled to the SISO, that interleaves the first plurality of extrinsic values to generate a first “
a priori probability”
(app) information;wherein the SISO, based on the plurality of metrics, calculates a second plurality of extrinsic values for each encoded symbol of the plurality of encoded symbols; wherein the interleaver/de-interleaver, that is communicatively coupled to the SISO, de-interleaves the second plurality of extrinsic values to generate a second “
a priori probability”
(app) information;wherein the first “
a priori probability”
(app) information is fed back to the SISO during a first SISO operation;wherein the second “
a priori probability”
(app) information is fed back to the SISO during a second SISO operation;wherein the SISO performs the first SISO operation and the second SISO operation during at least one iteration of iterative decoding to generate a plurality of soft symbol decisions, each soft symbol decision of the plurality of soft symbol decisions corresponds to an encoded symbol of the plurality of encoded symbols; wherein the SISO initially processes the encoded symbols of the plurality of encoded symbols in a first direction within a block, the first direction extending from a block beginning towards a block middle, to calculate forward metrics (alphas) and selectively stores alpha check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the first direction; wherein the SISO also initially processes the encoded symbols of the plurality of encoded symbols in a second direction within the block, the second direction extending from a block end towards the block middle, to calculate backward metrics (betas) and selectively stores betas check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the second direction; wherein, when the SISO substantially reaches the block middle when processing in the first direction and in the second direction, the SISO pushes each alpha value onto an alpha stack, and the SISO pushes each beta value onto a beta stack; wherein, when the SISO reaches the block middle after processing in the first direction, the SISO skips back to a first sub-block that has been processed in the first direction and re-calculates alphas for each encoded symbol contained in the first sub-block while simultaneously continuing to calculate betas in the second direction for a sub-block adjacent to the first sub-block and popping alphas off of the alpha stack and calculating soft symbol decisions for each encoded symbol within the sub-block adjacent to the first sub-block; and wherein, when the SISO substantially reaches the block middle after processing in the second direction, the SISO skips back to a second sub-block that has been processed in the second direction and re-calculates betas for each encoded symbol contained in the second sub-block while simultaneously continuing to calculate alphas in the first direction for a sub-block adjacent to the second sub-block and popping betas off of the beta stack and calculating soft symbol decisions for each encoded symbol within the sub-block adjacent to the second sub-block. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method, comprising:
-
processing the encoded symbols of the plurality of encoded symbols in a first direction within a block that includes a plurality of encoded symbols arranged into a plurality of sub-blocks, the first direction extending from a block beginning towards a block middle, to calculate forward metrics (alphas) and selectively storing alpha check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the first direction; processing the encoded symbols of the plurality of encoded symbols in a second direction within the block, the second direction extending from a block end towards the block middle, to calculate backward metrics (betas) and selectively storing betas check point values associated with the sub-blocks of the plurality of sub-blocks that are processed in the second direction; when reaching the block middle when processing in the first direction and in the second direction, storing each alpha value and each beta value; when reaching the block middle after processing in the first direction, skipping back to a first sub-block that has been processed in the first direction and re-calculating alphas for each encoded symbol contained in the first sub-block while simultaneously continuing to calculate betas in the second direction for a sub-block adjacent to the first sub-block, retrieving the stored alphas, and calculating soft symbol decisions for each encoded symbol within the sub-block adjacent to the first sub-block; and when reaching the block middle after processing in the second direction, skipping back to a second sub-block that has been processed in the second direction and re-calculating betas for each encoded symbol contained in the second sub-block while simultaneously continuing to calculate alphas in the first direction for a sub-block adjacent to the second sub-block, retrieving stored betas, and calculating soft symbol decisions for each encoded symbol within the sub-block adjacent to the second sub-block. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
Specification