WO2012146124A1 - Turbo译码的方法及装置 - Google Patents

Turbo译码的方法及装置 Download PDF

Info

Publication number
WO2012146124A1
WO2012146124A1 PCT/CN2012/073593 CN2012073593W WO2012146124A1 WO 2012146124 A1 WO2012146124 A1 WO 2012146124A1 CN 2012073593 W CN2012073593 W CN 2012073593W WO 2012146124 A1 WO2012146124 A1 WO 2012146124A1
Authority
WO
WIPO (PCT)
Prior art keywords
decoding
variables
module
current path
intermediate variable
Prior art date
Application number
PCT/CN2012/073593
Other languages
English (en)
French (fr)
Inventor
杜金周
Original Assignee
中兴通讯股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 中兴通讯股份有限公司 filed Critical 中兴通讯股份有限公司
Priority to RU2013152333/08A priority Critical patent/RU2571597C2/ru
Priority to EP12776607.9A priority patent/EP2704330A4/en
Publication of WO2012146124A1 publication Critical patent/WO2012146124A1/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • H03M13/2978Particular arrangement of the component decoders
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3972Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using sliding window techniques or parallel windows
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6522Intended application, e.g. transmission or communication standard
    • H03M13/65253GPP LTE including E-UTRA
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/6583Normalization other than scaling, e.g. by subtraction

Definitions

  • the present invention relates to the field of communications, and in particular to a method and apparatus for TURBO decoding.
  • BACKGROUND OF THE INVENTION Since its introduction in 1993, the TURBO code has been widely used in wireless communication systems due to its excellent performance close to the Shannon limit, and has been identified as the Third Generation Partnership Project (3GPP) mobile.
  • 3GPP Third Generation Partnership Project
  • One of the channel coding schemes of the communication system In the Long Term Evolution (LTE) system, higher transmission rates and better error performance are required, and the requirements for channel coding and decoding are also increased.
  • LTE Long Term Evolution
  • Turbo code decoding algorithm due to the iterative nature of the Turbo code decoding algorithm, it may have problems in hardware implementation. The most important one is the decoding speed. Therefore, reducing decoding complexity and decoding delay becomes an important issue in hardware implementation.
  • turbo decoding algorithm generally uses a log-MAP or a MAX-log-MAP algorithm. Since the important feature of the algorithm in hardware implementation is that it needs to be repeated multiple iterations, and each iteration also needs to recurse the intermediate variables alpha and beta. These features result in a large system delay for turbo decoding, which is not conducive to applications in high-speed 3G and LTE systems. Aiming at this problem, at present, a solution proposed in the related art is to adopt a multi-channel parallel decoding method, which divides the received data into multiple blocks according to the code constraint length and the actual length of the input data, and receives the data.
  • the decoding is performed, and after completing one decoding, the corresponding error factor controller is sent to calculate the error factor.
  • intermediate variables alpha and beta
  • the decoding time is long.
  • Another solution adopted in the related art is a turbo decoding method based on sliding window control. The purpose of control based on sliding window is to save the storage space of intermediate variables (alpha and beta), and does not solve the recursion of intermediate variables.
  • the hardware implementation of the process bow I. SUMMARY OF THE INVENTION
  • the present invention provides a method and apparatus for turbo decoding to solve at least the problem of excessive decoding delay and low decoding speed due to recursive calculation of intermediate variables in the related art.
  • a turbo decoding method In a process of performing multiple parallel decoding on a code block to be coded, each decoding module is performing decoding in each iteration process.
  • the method includes: for the code block to be decoded of the current path, the decoding module uses all the first intermediate variables of the current path from the way of recursion to the back, and adopts the method of recursing from back to front.
  • the decoding module obtains the current path according to all the first intermediate variables, all the second intermediate variables, and all branch transfer metrics of the module to be decoded All log likelihood ratios (LLRs); the decoding module obtains a priori information and a decoding result of the current path output according to all the log likelihood ratios.
  • LLRs log likelihood ratios
  • the decoding module obtains all the first intermediate variables of the current path by recursing from the backward direction, and obtains all the second intermediate variables of the current path by recursing from back to front, including:
  • the code module obtains all the branch transfer variables of the current path by recursing from the forward direction, and recursively obtains all the first intermediate variables of the current path from the forward and backward according to all the branch transfer variables obtained;
  • the decoding module obtains all the branch transfer variables of the current path by recursively from the back to the front, and recursively obtains the current path from the back to the front according to all the branch transfer variables obtained this time. All of the second intermediate variables.
  • the decoding module recursively obtains all the first intermediate variables of the current path from the forward and backward according to all the obtained branch transfer variables: the decoding module is recursing the current path When the first intermediate variable of the first half of the code block to be decoded is from the previous one, after performing the adding operation, performing the normalization operation, performing the recursive translation of the current path An addition operation of the first one of the first intermediate variables from the second half of the code block; the decoding module performs recursive execution of the first half of the first half of the first half An operation of adding an intermediate variable while performing a normalization operation of the first half of the first intermediate variable from the second half, and then performing the second of the first half of the first half Performing the addition operation of the second half of the first intermediate variable from the second half of the normalization operation of the first intermediate variable, thereby recursing all the said current roads The first intermediate variable.
  • the decoding module recursively obtains all the second intermediate variables of the current path from the back to the front according to the obtained all the branch transfer variables: the decoding module recursively the current path
  • the decoding module recursively the current path
  • the decoding module performs recursive second from the back to the front half
  • the addition operation of the second intermediate variable simultaneously performs the normalization operation of the first intermediate variable of the first half of the first half, and performs the latter half of the second half Performing a normalization operation of the second second intermediate variable before the second half of the second intermediate variable from the back to the front, and recursing the loop All of the second intermediate variables of the current path are described.
  • the method further includes: the decoding module, each of the first intermediate variable corresponding to a code block of a first half of the first half and a code block corresponding to a first half of the second half Each of the first intermediate variables is stored in a memory; the decoding module sets each of the second intermediate variables corresponding to a code block of a second half of the second half and a code of a second half of the first half Each of the second intermediate variables corresponding to the block is stored in a memory.
  • the decoding module obtains all log likelihood ratios of the current path according to all the first intermediate variables, all the second intermediate variables, and all branch transfer metrics of the module to be decoded.
  • the decoding module when recursing each of the first intermediate variables corresponding to the second half of the code block of the first half and the first intermediate variables corresponding to the second half of the second half of the code block, When each of the first intermediate variables is recursively, the stored second intermediate variable corresponding to the location is read, and according to the first intermediate variable, the second intermediate variable, and a branch transfer metric corresponding to the location Obtaining, in sequence, a log likelihood ratio corresponding to the location; the decoding module recursively each of the second intermediate variables corresponding to the first half of the second half of the code block and the first half When each of the second intermediate variables corresponding to the first half of the code block, each time the second intermediate variable is recursively obtained, the stored first intermediate variable corresponding to the position is read, And according to the second intermediate variable, the first intermediate variable, and the branch transfer metric corresponding to the location, sequentially obtaining the log likelihood ratio corresponding to the location.
  • the method further includes: performing CRC check according to the decoding result of each channel and a cyclic redundancy check (CRC) code of the code block to be decoded, If the verification is correct, the iteration is stopped and the decoding process is completed. Otherwise, the a priori information outputted by each channel is used for the next iterative process.
  • CRC cyclic redundancy check
  • a turbo decoding apparatus including a multiplex decoding module, wherein each of the decoding modules includes: a recursive module, configured to code a current path to be decoded Block, using the method of recursing from the way to get all the first intermediate variables of the current way, and using the recursive method from the back to the front to obtain all the second intermediate variables of the current way; LLR calculation module, set to obtain all the Deriving a first intermediate variable, all of the second intermediate variable, and all branch transfer metrics of the module to be decoded, obtaining all log likelihood ratios (LLRs) of the current path, and outputting according to all the LLRs
  • the hard-checking module is configured to perform hard-segmentation on all the LLRs obtained by the LLR calculation module, and output the hard-rule result as a decoding result.
  • the recursive module includes: a first branch transfer variable calculation module, configured to obtain all branch transfer variables of the current path by way of recursive to the post; the first intermediate variable calculation module is set according to the All the branch transfer variables obtained by the first branch transfer variable calculation module are recursively obtained from the forward and backward to obtain all the first intermediate variables of the current path; and the second branch transfer variable calculation module is set to adopt from the back to the front Recursively obtaining all branch transfer variables of the current path; second intermediate variable calculation module, set to And all the second intermediate variables of the current path are recursed from the back to the front according to all the branch transfer variables obtained by the second branch transfer variable calculation module.
  • the first intermediate variable calculation module includes: a first addition operation unit and a first normalization operation unit, wherein the first addition operation unit is set as a process of recursing each of the first intermediate variables Performing an add operation; the first normalization operation unit is configured to perform a normalization operation in the process of recursing each of the first intermediate variables.
  • the second intermediate variable calculation module includes: a second plus operation unit and a second normalization operation unit, wherein the second operation unit is configured to recur each of the second intermediate variables Performing an add operation; the second normalization operation unit is configured to perform a normalization operation in the process of recursing each of the second intermediate variables.
  • the decoding module further includes: a storage module, configured to store, according to the recursive module, each of the first intermediate variables corresponding to the first half of the code block of the first half and the Each of the first intermediate variables corresponding to the first half of the code block of the second half, each of the second intermediate variables corresponding to the code block of the second half of the second half, and the second half of the first half Each of the second intermediate variables corresponding to the code block.
  • a storage module configured to store, according to the recursive module, each of the first intermediate variables corresponding to the first half of the code block of the first half and the Each of the first intermediate variables corresponding to the first half of the code block of the second half, each of the second intermediate variables corresponding to the code block of the second half of the second half, and the second half of the first half Each of the second intermediate variables corresponding to the code block.
  • the device further includes: an output control module, configured to perform a CRC check according to the decoding result output by the decoding module and the CRC code of the code block to be decoded, and if the verification is correct, stop Iteratively, the decoding process is completed, otherwise, the a priori information output by each of the decoding modules is used to perform the next iterative process.
  • an output control module configured to perform a CRC check according to the decoding result output by the decoding module and the CRC code of the code block to be decoded, and if the verification is correct, stop Iteratively, the decoding process is completed, otherwise, the a priori information output by each of the decoding modules is used to perform the next iterative process.
  • FIG. 1 is a basic schematic diagram of turbo decoding
  • FIG. 2 is a schematic diagram of a hardware architecture of a turbo decoding apparatus
  • 3 is a flowchart of a turbo decoding method according to an embodiment of the present invention
  • FIG. 4 is a schematic diagram of multiple parallel decoding according to an embodiment of the present invention
  • FIG. 5 is a second way of multipath parallelization according to an embodiment of the present invention
  • FIG. 6 is a schematic structural diagram of a decoding module in a turbo decoding apparatus according to an embodiment of the present invention
  • FIG. 7 is a schematic structural diagram of a recursive module according to a preferred embodiment of the present invention
  • FIG. 9 is a schematic diagram of a hardware structure of a decoding module according to a preferred embodiment of the present invention.
  • FIG 1 is a basic schematic diagram of turbo coding, as shown in FIG priori information (3 ⁇ 4) and a parity bit 1 (y lk) inputted to the decoding module 1 (DEC1) in 1, for the use of long-MAP or MAX
  • DEC1 decoding module 1
  • the MAPI calculation is performed on the input code block to be decoded, and then the result is input to the interleaving module for interleaving, and then input to the decoding module 2 (DEC2) and the input verification.
  • Bit 2 (y 2k ) performs the MAP2 calculation together, and the result is output to the decoding module 1 via the deinterleave module output or as a priori information.
  • the device mainly includes: an input control module, a system bit/check bit/a priori information module, an interleaving module, a decoding module (DEC), and decoding.
  • Control module and output control module The input control module is mainly responsible for the data input by the turbo decoder according to the system bit, the check bit 1, the check bit 2 data, the system tail bit, the interleaved system tail bit, the check 1 tail bit, and the check 2 tail
  • the bits are differentiated, and the associated chip select control signals are generated, and the write operations of the system bit RAM and the check bit RAM are controlled.
  • the system bit/check bit/a priori information module performs read and write operations of system bits, parity bits, and a priori information, respectively.
  • the data to be decoded from the input control module is written into the corresponding RAM according to the decoding parallelism; after the decoding is started, the data is read from the respective RAMs according to the sequential/interleaved address, and sent to the decoding module for decoding.
  • the interleaving module provides an interleaving address in real time, so that the turbo decoder can obtain the interleaved systematic bits and a priori information when calculating the MAP2, thereby performing current a priori information calculation, and writing the a priori information into the prior information storage RAM. .
  • the decoding module mainly decodes the data outputted by the system, the checksum and the prior information module, and writes the calculated a priori information data to the a priori information storage RAM, and sends the decoded result to the output control module.
  • the decoding control module controls the operation of the entire turbo decoding core, and is responsible for generating a decoding enable signal, a code block related parameter, a data read/write enable, an address, a ping-pong control signal, and a calculation enable signal.
  • the output control module is responsible for deinterleaving, reading and writing control of the code block decoding result and output of related parameters. Taking the code block of length K as an example, the turbo decoding process mainly includes the following steps: Step 1.
  • the input decoded data (3K+12 total) is processed into an input control module, and is split into K system bits.
  • Step 2 After all the data is written, the start signal start will be pulled high, and multiple parallel decoding will be started.
  • Step 3 MAPI processing: reading the system bit and the check bit 1 from the corresponding RAM according to the original address, and sending it to the parallel MAP processing unit for MAPI calculation (calculating the MAPI prior information at the first iteration), and The calculated external information is written into the a priori information RAM.
  • Step 4 MAP2 processing: the check bit read according to the original address, the systematic bit and the prior information read by the interleaving address (the tail bit prior information used by the MAP2 in the first iteration is taken to be zero, and the corresponding tail The read/write of the bit related data does not participate in the interleaving), and is sent to the parallel MAP processing unit for MAP2 calculation, and the calculated a priori information and the hard decision result are respectively written into the a priori information RAM and the decoding result RAM.
  • FIG. 3 is a flowchart of a decoding method according to an embodiment of the present invention. As shown in FIG.
  • each decoding module When performing decoding (including MAPI calculation and MAP2 calculation), the method mainly includes the following steps (step S302 - step S306): Step S302: For the code block to be decoded of the current path, the decoding module obtains all the first intermediate variables (ie, alpha) of the current path from the way of recursion to the back, and adopts the method of recursing from back to front. All second intermediate variables of the current path (ie beta); wherein the first intermediate variable can be alpha and the second intermediate variable is beta, or vice versa, ie the first intermediate variable is beta and the second intermediate variable is alpha .
  • the first intermediate variable is alpha and the second intermediate variable is beta.
  • a branch transfer variable (ie, gamma) required for recursion may be calculated for the first intermediate variable and the second intermediate variable respectively, and for the first intermediate variable, the decoding module All the branch transfer variables of the current path are obtained by recursing from the forward direction, and all the first intermediate variables (alpha) of the current path are recursively derived from the forward and backward according to all the branch transfer variables obtained; meanwhile, for the second intermediate variable The decoding module uses all the branch transfer variables of the current path by recursively from the back to the front, and recursively obtains all the second intermediate variables (beta) of the current path according to the current branch transfer variables obtained from the back.
  • the first intermediate variable and the second intermediate variable are directly calculated using the recursive formula, and the processing using the hardware pipeline is not utilized, and each time the recursive calculation of the first intermediate variable and the second intermediate variable includes gamma and the first intermediate variable or the second In the two parts of the addition and normalization of the intermediate variable, the delay of the combined circuit logic is also relatively large. Therefore, in a preferred embodiment of the embodiment of the present invention, each time the recursive calculation of the first intermediate variable or the second intermediate variable is completed in two steps, the addition operation is performed first, and then the normalization processing is performed, that is, each time first The recursive calculation of the intermediate variable or the second intermediate variable is done in 2 beats (elk).
  • the first intermediate variable and the second intermediate variable of the preceding and succeeding half of the code block to be decoded of the same way are time-divisionally calculated. For example, when the decoding module recursively moves from the first first intermediate variable (for example, alpha) of the first half of the code block to be decoded of the current path, after performing the adding operation, normalization is performed.
  • first first intermediate variable for example, alpha
  • the addition operation of the first first intermediate variable (alpha) from the back to the second half of the code block to be decoded of the current path is performed; the decoding module performs the recursive first half of the proceeding
  • the normalization operation of the second half of the first intermediate variable (for example, alpha) from the second half is performed, and then the first half is executed.
  • the decoding module when the decoding module recursively forwards the first second intermediate variable (for example, beta) of the second half of the code block to be decoded of the current path, after performing the adding operation, At the same time as the normalization operation
  • the row recursively adds the first second intermediate variable (beta) of the first half of the current code block to be decoded; the decoding module performs the recursive second half of the back-to-back
  • the addition of the second second intermediate variable (beta) while performing the normalization of the first half of the first intermediate variable (beta) in the first half, and from the back to the second half of the execution
  • the normalization operation of the second second intermediate variable (beta) is performed simultaneously with the addition of the second second intermediate variable (beta) from the back to the front, thereby recursing the current All second intermediate variables (beta) of the road.
  • the branch transition metric corresponding to the position calculates a log likelihood ratio (LLR) corresponding to the position, and similarly, after the second intermediate variable corresponding to the middle part of the second half, the second half corresponding to the second half of the recursive calculation corresponds
  • LLR log likelihood ratio
  • the second intermediate variable calculated in this part may not be stored, and after obtaining the second intermediate variable, directly according to the stored first corresponding to the position
  • the intermediate variable and the branch transfer metric corresponding to the position calculate the log likelihood ratio (LLR) corresponding to the position ).
  • the decoding module sets each first intermediate variable (alpha) corresponding to the first half of the code block of the first half and The first intermediate variable (alpha) corresponding to the first half of the code block of the second half is stored in the memory; the decoding module will be the second intermediate variable (beta) corresponding to the code block of the second half of the second half and Each second intermediate variable (beta) corresponding to the code block of the second half of the first half is stored in the memory.
  • the decoding module obtains all log likelihood ratios of the current path according to all the first intermediate variables, all the second intermediate variables, and all branch transfer metrics of the module to be decoded.
  • the decoding module may recursively correspond to each of the first intermediate variable (alpha) corresponding to the second half of the code block of the first half and the first half of the code block corresponding to the second half of the second half
  • the intermediate variable (alpha) is obtained by recursing a first intermediate variable (alpha)
  • the stored second intermediate variable (beta) corresponding to the position is read, and according to the first intermediate variable (alpha) and the The second intermediate variable (beta) and the branch transfer metric (gamma) corresponding to the position obtain a log likelihood ratio corresponding to the position
  • the decoding module recursively corresponds to each of the first half of the second half of the code block
  • the second intermediate variable (beta) and each second intermediate variable (beta) corresponding to the first half of the first half of the code block each time a recursive result is obtained, a second intermediate variable (beta) is read, and the stored pair is read.
  • LIR(k) max ( [alpha(k, 0+1) + gamn ia_l(k, 0+1) + beta(k+l, 4+1), alpha(k, 1+1) + gamna_l(k , 1+1) + beta(k+l, 0+1), ...
  • end step S306 the decoding module according to all the logarithms
  • the likelihood ratio is obtained by a priori information and a decoding result of the current path output.
  • the a priori information of the current output can be calculated according to the currently calculated LLR and the currently input system bit and prior information.
  • the CRC is performed according to the decoding result of each channel and the cyclic redundancy check (CRC) code of the code block to be decoded.
  • the iteration is stopped, and the decoding process is completed. Otherwise, the a priori information outputted by each channel is used for the next iterative process.
  • the simultaneous iterative calculation of the first intermediate variable (alpha) and the second intermediate variable (beta) is not adopted, so that the problem that the system delay is too long is not solved, and in the case where the iteration is correct, The iterative operation can be terminated in real time, and the system processing time is further increased.
  • the first intermediate variable (alpha) and the second intermediate variable (beta) are used for simultaneous iterative calculation, and the system delay is shortened to the original two.
  • the parallel turbo decoding process in the embodiment of the present invention mainly includes the following steps: Step 1: divide the number of PUs according to the length of the code block (processing unit, It is called parallel channel number. In this paper, one PU is also a sliding window at the same time. It is ready for multi-channel parallel decoding.
  • Step 2 Set the alpha and beta of PU-f and PU-b.
  • Initial values denoted as alpha0, betaO, alpha1, betao from alpha0, betaO iterations, alpha2, beta2, and so on by alphal, betal iterations), and their overlaps (overlap window length).
  • Step 3 Using steps 1 and steps respectively The segmentation method of 2 calculates the gamma of PU-f and PU-b of each PU according to corresponding system bits, parity bits and a priori information.
  • Step 4 Calculate the alpha using gamma. It is implemented in 2 steps, that is, the alpha+gamma is calculated first, and then normalized to obtain the next alpha.
  • the alpha+gamma operation of the n-th number of PU-b is performed, so as to ensure that the throughput of the decoding is not affected, and at the same time,
  • the alpha value of the first half of PU-f and PU-b; the processing of beta is similar to alpha, but saves the beta of the latter half of PU-f and PU-b;
  • Step 5: When PU-f or PU When half of -b is calculated, the alpha calculated by the latter half of PU-f or PU-b and the beta saved by the latter half and the corresponding branch transfer metric (gamma) are calculated to obtain LLR (pair The number likelihood ratio), and then calculate the a priori information of the output according to the currently calculated LLR and the currently input system bits and prior information; meanwhile, the beta and the calculated half of the PU-f or PU-b are used.
  • LLR peak The number likelihood ratio
  • Step 6 After completing one iteration, the hard decision result is obtained by using the LLR, and the CRC is continued. Check, when the checksum is wrong, continue the next iteration until the preset maximum number of iterations. When the check is correct, the iteration is stopped immediately, and the next CB (code block) decoding is prepared.
  • the length of the ACS critical path during the beta iteration (the original one-elk addition and comparison operation becomes two elk completions, which is more conducive to FPGA and ASIC implementation, and the frequency and throughput of the hardware circuit will be higher);
  • the simultaneous and backward collision calculations of alpha and beta respectively reduce the decoding delay of each iteration to 1/2; when the channel quality is good, the iteration of CRC is terminated, so that the number of iterations of decoding is again
  • the reduction is doubled (for example, the maximum iteration is 8 times, and the actual iteration is only 1 time, and the decoding time is only 1/8 of the original after the CRC iteration is terminated.)
  • the code block length is K, 4 channels and behavior examples.
  • each channel is decoded in parallel.
  • specific to each way first calculate the overlap part (dashed arrow), and then calculate the effective data (solid arrow), as shown in Figure 4.
  • alpha and beta are calculated simultaneously from both ends of each path. Taking the typical second road as an example, the third way is the same as the second way.
  • the first half of the first way calculates alpha, there is no overlap.
  • the second half of the fourth way calculates beta, overlap is the tail bit of the entire code block. Considering the overlapping part of each road, it is equivalent to the first step from the code block K in time.
  • the calculation of alpha uses a recursive formula, it is not conducive to the processing of hardware pipelines. And each time the alpha calculation includes gamma+alpha and normalization, the combined circuit logic delay is relatively large, which is not conducive to the hardware implementation of FPGA or ASIC. Therefore, in the present embodiment, the calculation of alpha is divided into two steps, the addition is performed first, and then the normalization is performed. Therefore, in the present embodiment, the time-sharing calculation is employed for the alpha calculation of the front and rear half of the same way (which has been completed by 2 shots).
  • the first elk completes the alpha (K/4-overlap) addition operation
  • the second elk completes the alpha (K/4-overlap) normalization operation (gets alpha(K/4-overlap))
  • the alpha (3K/8-overlap) addition operation is completed
  • the third elk completes the alpha (3K/8-overlap) normalization operation (gets alpha (3K/8-overlap)) and completes alpha (K/). 4-overlap+l), and so on, until (K/4+overlap) elk, get all the alpha values of the current path (including the alpha of the overlap part, a total of K/4+overlap).
  • beta The calculation process of beta is similar to alpha and at the same time, it is only the opposite direction. It starts from the first (3K/8-l+overlap) and (K/2-l+overlap) of the code block, and is decremented by address according to the address.
  • the law reads the corresponding system bits, check bits and a priori information, and calculates gamma according to formula (1). This is obtained in the following order to lj gamma(3 K/ 8 - 1 +overlap) , gamma(K/2- 1 +overlap) , gamma(3 K/ 8 -2+overlap) , gamma(K/2-2+ Overlap), ...
  • the beta is successively decremented to the 5K/16-1 and 7K/16-1, respectively.
  • the corresponding values read from the alpha and beta storage RAMs are combined with the branch transfer metric (gamma) corresponding to the location, and two LLRs can be obtained at the same time. This reduces the decoding time by about 1/2.
  • the a priori information is calculated for each LLR.
  • the a priori information storage RAM adopts a sequential write interleaving read method to realize the interleaving; after the MAP2 processing, the a priori information storage RAM adopts an interleaving write sequential read method to realize the deinterleaving.
  • the CRC check is performed on the hard decision data after each iteration. If the check is correct, the iteration is stopped. . Otherwise, using the new a priori information generated after the iteration, the next iteration is performed along with the received systematic bits and parity bits.
  • each decoding module may include: a recursive module 10, an LLR calculation module 20, and a hard decision module 30.
  • the recursive module 10 is configured to obtain all the first intermediate variables (for example, alpha) of the current path from the way to the post-recursive code block to be decoded, and adopt the method from the back to the front. Pushing to get all the second intermediate variables of the current path (for example, beta); LLR calculation module 20, connected to the recursive module 10, set to get all the first intermediate variables (alpha), all second intermediate variables (beta) And all branch transfer metrics (gamma) of the module to be decoded, obtain all log likelihood ratio LLRs of the current path, and output a priori information according to all LLRs; hard decision module 30, connected to the LLR calculation module 20, set to perform hard decision on all LLRs obtained by the LLR calculation module, and output the hard decision result as a decoding result.
  • first intermediate variables for example, alpha
  • second intermediate variables for example, beta
  • gamma branch transfer metrics
  • the recursive module 10 may include: a first branch transfer variable calculation module 100, configured to obtain all branch transfers of the current path by way of recursive to the post-recursion
  • the first intermediate variable calculation module 102 is configured to recur all the first intermediate variables (alpha) of the current path from the forward and backward according to all the branch transfer variables obtained by the first branch transfer variable calculation module 100;
  • the calculation module 104 is configured to obtain all the branch transfer variables of the current path by recursing from back to front;
  • the second intermediate variable calculation module 106 is configured to calculate all the branch transfer variables obtained by the second branch transfer variable calculation module 104.
  • the first intermediate variable calculation module 102 may include: a first addition operation unit and a first normalization operation unit, where the first addition operation unit is configured to perform addition in the process of recursing each of the first intermediate variables.
  • the first normalization operation unit is configured to perform a normalization operation in the process of recursing each of the first intermediate variables.
  • the first operation unit performs the addition operation of the first first intermediate variable (for example, alpha) of the first half of the code block to be decoded of the current path to be decoded, in the first return While the normalization operation unit performs the normalization operation, the first operation unit performs an addition operation of the first first intermediate variable (alpha) from the back to the second half of the code block to be decoded of the current path.
  • the first first intermediate variable for example, alpha
  • the first operation unit performs an addition operation of the second first intermediate variable (for example, alpha) from the previous half of the recursion, while the first normalization operation unit performs the second half of the operation from the back to the rear Normalization operation of the first first intermediate variable (eg, alpha), and then performing normalization of the first first intermediate variable (alpha) from the first half of the first normalized operation unit in the first normalization operation unit.
  • the first adding operation unit performs the addition operation of the second first intermediate variable (alpha) from the second half, and in this loop, recursively obtains all the first intermediate variables (alpha) of the current path.
  • the second intermediate variable calculation module 106 may include: a second addition operation unit and a second normalization operation unit, the second addition operation unit being configured to perform an addition operation in the process of recursing each of the second intermediate variables;
  • the second normalization operation unit is configured to perform a normalization operation in the process of recursing each of the second intermediate variables. For example, in the second adding operation unit, performing the adding operation of the first second intermediate variable (for example, beta) from the back to the front half of the code block to be decoded of the current path, in the second While the normalization operation performs the normalization operation, the second operation unit performs an addition operation of the first second intermediate variable (beta) from the back to the front of the first half of the code block to be decoded of the current path.
  • the first second intermediate variable for example, beta
  • the second adding operation unit performs the addition operation of the second second intermediate variable (beta) from the back to the second half of the recursive operation unit, and the second normalization operation unit performs the front half of the first half The normalization operation of the first second intermediate variable (beta), and the normalization of the second second intermediate variable (beta) from the second to the second normalized operation unit
  • the second adding operation unit performs the addition operation of the second second intermediate variable (beta) from the back to the front portion, thereby looping and recursing all the second intermediate variables (beta) of the current path.
  • each decoding module may further include a storage module 40 configured to store the recursive module 10 and the first half of the recursive module 10 Each of the first intermediate variable corresponding to the first half of the code block and each of the first intermediate variable corresponding to the code block of the first half of the second half, and the code block of the second half of the second half Corresponding each of the second intermediate variables and each of the second intermediate variables corresponding to the code blocks of the second half of the first half.
  • the apparatus may further improve the output control module in FIG. 2, where the output control module is configured to decode and output the decoded result according to each decoding module.
  • the cyclic redundancy check code of the code block is subjected to CRC check.
  • FIG. 9 is a schematic structural diagram of a decoding module 30 according to a preferred embodiment of the present invention. As shown in FIG.
  • variable calculation module recursively outputs the LLR input to the alpha calculation module (equivalent to the first intermediate variable calculation module), and the alpha calculation module calculates the alpha of the path, part of which is stored in the data RAM, and a part is input to the LLR calculation module.
  • the LLR calculation module calculates the LLR according to the input alpha and the beta stored in the data RAM, and outputs the a priori information (ext_apri), and outputs the calculated LLR to the hard decision module, and the hard decision module according to the input LLR, system information, and Prior information (apri). Again, the corresponding processing for beta.
  • the technical solution provided by the embodiment of the present invention uses the simultaneous calculation of alpha and beta, shortening the decoding delay of about 1/2; meanwhile, the critical path in each channel
  • the iterative calculation of the key path of decoding/alpha/beta can be changed from the original one-stage pipeline to the two-stage pipeline without reducing the throughput of the decoder.
  • the calculation method of alpha and beta collisions only adds some register resources, and does not increase RAM resources, which has no significant impact on the scale of the entire design circuit.
  • modules or steps of the present invention can be implemented by a general-purpose computing device, which can be concentrated on a single computing device or distributed over a network composed of multiple computing devices. Alternatively, they may be implemented by program code executable by the computing device, such that they may be stored in the storage device by the computing device and, in some cases, may be different from the order herein.
  • the steps shown or described are performed, or they are separately fabricated into individual integrated circuit modules, or a plurality of modules or steps are fabricated as a single integrated circuit module.
  • the invention is not limited to any specific combination of hardware and software.
  • the above is only the preferred embodiment of the present invention, and is not intended to limit the present invention, and various modifications and changes can be made to the present invention. Any modifications, equivalent substitutions, improvements, etc. made within the spirit and scope of the present invention are intended to be included within the scope of the present invention.

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Description

TURBO译码的方法及装置 技术领域 本发明涉及通信领域, 具体而言, 涉及一种 TURBO译码的方法及装置。 背景技术 TURBO码自 1993年提出以来, 由于其接近 Shannon极限的优异性能, 被广泛应 用于无线通信系统中, 并且已被确定为第三代合作伙伴计划 (Third Generation Partnership Project, 简称为 3GPP)移动通信系统的信道编译码方案之一。 在长期演进 (Long Term Evolution, 简称为 LTE) 系统中, 要求更高的传输速率和更好的误码性 能, 对信道编译码的要求也相应提高。 然而, 由于 Turbo码译码算法的迭代特性, 它 在硬件实现时可能会存在问题, 其中, 最主要的就是译码速度。 因此, 降低译码复杂 度和译码时延成为硬件实现的重要问题, 性能和资源上的折衷考虑是实现 Turbo码的 关键。 在相关技术中, turbo译码在算法上一般采用 log-MAP或者 MAX-log-MAP算法。 由于该算法在硬件实现中的重要特征就是需要不断进行多次迭代, 而每次迭代的时候 也需要对中间变量 alpha和 beta进行递推迭代。这些特点造成了 turbo译码的系统延时 较大, 不利于在高速的 3G和 LTE系统中的应用。 针对该问题, 目前, 相关技术中提 出的一种解决方案是采用多路并行的译码方法, 该方法将接收到的数据按照码约束长 度和输入数据的实际长度分为多块, 对接收数据同时进行译码, 在完成一次译码后均 送入其后相应的误差因子控制器, 计算其误差因子。 在该方法中, 在每个并行译码模 块处理上, 分别对中间变量 (alpha和 beta) 进行计算, 因此, 译码时间较长。 相关技术中采用的另一种解决方案是基于滑窗控制的 turbo译码方法, 基于滑窗 进行控制的目的是为了节省中间变量(alpha和 beta) 的存储空间, 并未解决中间变量 的递推过程弓 I起的硬件实现上的问题。 发明内容 本发明提供了一种 turbo译码的方法及装置, 以至少解决相关技术中由于分别递 归计算中间变量而导致译码延时过大, 译码速度不高的问题。 根据本发明的一个方面, 提供了一种 turbo译码的方法, 在对待译码的码块进行 多路并行译码过程中, 在每一次迭代过程中, 每路译码模块在进行译码时, 所述方法 包括: 对当前路的待译码的码块, 所述译码模块采用从前往后递推的方式得到当前路 的所有第一中间变量,同时采用从后往前递推的方式得到当前路的所有第二中间变量; 所述译码模块根据得到所有所述第一中间变量、 所有所述第二中间变量以及所述待译 码的模块的所有分支转移度量, 得到当前路的所有对数似然比(LLR); 所述译码模块 根据所有所述对数似然比, 得到当前路输出的先验信息和译码结果。 优选地,所述译码模块采用从前往后递推的方式得到当前路的所有第一中间变量, 同时采用从后往前递推的方式得到当前路的所有第二中间变量包括: 所述译码模块采 用从前往后递推的方式得到所述当前路的所有分支转移变量, 并根据得到的所有所述 分支转移变量从前往后递推得到所述当前路的所有所述第一中间变量; 同时, 所述译 码模块采用从后往前递推的方式得到所述当前路的所有分支转移变量, 并根据本次得 到的所有所述分支转移变量从后往前递推得到所述当前路的所有所述第二中间变量。 优选地, 所述译码模块根据得到的所有所述分支转移变量从前往后递推得到所述 当前路的所有所述第一中间变量包括: 所述译码模块在递推所述当前路的待译码的码 块的前半部分的从前往后的第一个所述第一中间变量时, 在进行加操作之后, 在进行 归一化操作的同时, 执行递推所述当前路的待译码的码块的后半部分的从前往后的第 一个所述第一中间变量的加操作; 所述译码模块执行递推所述前半部分的从前往后的 第二个所述第一中间变量的加操作, 同时执行所述后半部分的从前往后的第一个所述 第一中间变量的归一化操作, 然后在执行所述前半部分的从前往后的第二个所述第一 中间变量的归一化操作的同时执行所述后半部分的从前往后的第二个所述第一中间变 量的加操作, 以此循环, 递推得到所述当前路的所有所述第一中间变量。 优选地, 所述译码模块根据得到的所有所述分支转移变量从后往前递推得到所述 当前路的所有所述第二中间变量包括: 所述译码模块在递推所述当前路的待译码的码 块的后半部分的从后往前的第一个所述第二中间变量时, 在进行加操作之后, 在进行 归一化操作的同时, 执行递推所述当前路的待译码的码块的前半部分的从后往前的第 一个所述第二中间变量的加操作; 所述译码模块执行递推所述后半部分的从后往前的 第二个所述第二中间变量的加操作, 同时执行所述前半部分的从后往前的第一个所述 第二中间变量的归一化操作, 并在执行所述后半部分的从后往前的第二个所述第二中 间变量的归一化操作的同时执行所述前半部分的从后往前的第二个所述第二中间变量 的加操作, 以此循环, 递推得到所述当前路的所有所述第二中间变量。 优选地, 所述方法还包括: 所述译码模块将与所述前半部分的前一半的码块对应 的各个所述第一中间变量以及与所述后半部分的前一半的码块对应的各个所述第一中 间变量存储到存储器中; 所述译码模块将与所述后半部分的后一半的码块对应的各个 所述第二中间变量以及与所述前半部分的后一半的码块对应的各个所述第二中间变量 存储到存储器中。 优选地, 所述译码模块根据得到所有所述第一中间变量、 所有所述第二中间变量 以及所述待译码的模块的所有分支转移度量, 得到当前路的所有对数似然比包括: 所 述译码模块在递推与所述前半部分的后一半码块对应的各个所述第一中间变量以及所 述后半部分的后一半码块对应的各个所述第一中间变量时, 每递推得到一个所述第一 中间变量时, 读取存储的与该位置对应的所述第二中间变量, 并根据该第一中间变量、 该第二中间变量以及该位置对应的分支转移度量, 依次得到一个与该位置对应的所述 对数似然比; 所述译码模块在递推与所述后半部分的前一半码块对应的各个所述第二 中间变量以及所述前半部分的前一半码块对应的各个所述第二中间变量时, 每递推得 到一个所述第二中间变量时, 读取存储的与该位置对应的所述第一中间变量, 并根据 该第二中间变量、 该第一中间变量以及该位置对应的分支转移度量, 依次得到一个与 该位置对应的所述对数似然比。 优选地, 在得到各路的译码结果之后, 所述方法还包括: 根据各路的所述译码结 果与待译码的码块的循环冗余校验(CRC)码进行 CRC校验, 如果校验正确, 则停止 迭代, 完成译码过程, 否则, 利用各路输出的所述先验信息进行下一次的迭代过程。 根据本发明的另一方面, 提供了一种 turbo译码装置, 包括多路译码模块, 其中, 每路所述译码模块包括: 递推模块, 设置为对当前路的待译码的码块, 采用从前往后 递推的方式得到当前路的所有第一中间变量, 同时采用从后往前递推的方式得到当前 路的所有第二中间变量; LLR计算模块, 设置为根据得到所有所述第一中间变量、 所 有所述第二中间变量以及所述待译码的模块的所有分支转移度量, 得到当前路的所有 对数似然比 (LLR), 并根据所有所述 LLR, 输出先验信息; 硬判模块, 设置为对所述 LLR计算模块得到的所有所述 LLR执行硬判, 将硬判结果作为译码结果输出。 优选地, 所述递推模块包括: 第一分支转移变量计算模块, 设置为采用从前往后 递推的方式得到所述当前路的所有分支转移变量; 第一中间变量计算模块, 设置为根 据所述第一分支转移变量计算模块得到的所有所述分支转移变量从前往后递推得到所 述当前路的所有所述第一中间变量; 第二分支转移变量计算模块, 设置为采用从后往 前递推的方式得到所述当前路的所有分支转移变量; 第二中间变量计算模块, 设置为 根据所述第二分支转移变量计算模块得到的所有所述分支转移变量从后往前递推得到 所述当前路的所有所述第二中间变量。 优选地, 所述第一中间变量计算模块包括: 第一加操作单元和第一归一化操作单 元, 其中, 所述第一加操作单元设置为在递推各个所述第一中间变量的过程中执行加 操作; 所述第一归一化操作单元设置为在递推各个所述第一中间变量的过程中执行归 一化操作。 优选地, 所述第二中间变量计算模块包括: 第二加操作单元和第二归一化操作单 元, 其中, 所述第二加操作单元设置为在递推各个所述第二中间变量的过程中执行加 操作; 所述第二归一化操作单元设置为在递推各个所述第二中间变量的过程中执行归 一化操作。 优选地, 所述译码模块还包括: 存储模块, 设置为存储所述递推模块递推得到的 与所述前半部分的前一半的码块对应的各个所述第一中间变量以及与所述后半部分的 前一半的码块对应的各个所述第一中间变量, 与所述后半部分的后一半的码块对应的 各个所述第二中间变量以及与所述前半部分的后一半的码块对应的各个所述第二中间 变量。 优选地, 所述装置还包括: 输出控制模块, 设置为根据各路所述译码模块输出的 译码结果与待译码的码块的 CRC码进行 CRC校验, 如果校验正确, 则停止迭代, 完 成译码过程, 否则, 利用各路所述译码模块输出的所述先验信息进行下一次的迭代过 程。 通过本发明, 采用在并行的各路译码模块中, 两个中间变量分别从前往后及从后 往前同时递归计算, 从而解决了现有的并行译码方法中每次迭代的时间过长的问题, 进而达到了大大缩短了译码延迟, 提高了译码的速度的技术性效果。 附图说明 此处所说明的附图用来提供对本发明的进一步理解, 构成本申请的一部分, 本发 明的示意性实施例及其说明用于解释本发明, 并不构成对本发明的不当限定。 在附图 中: 图 1是 turbo译码的基本原理图; 图 2是 turbo译码装置的硬件架构示意图; 图 3是根据本发明实施例的 turbo译码方法的流程图; 图 4是根据本发明实施例的多路并行译码的示意图; 图 5是根据本发明实施例的多路并行时第 2路的处理过程示意图; 图 6是根据本发明实施例的 turbo译码装置中的译码模块的结构示意图; 图 7是根据本发明优选实施例的递推模块的结构示意图; 图 8是根据本发明另一优选实施例的译码模块的结构示意图; 以及 图 9是根据本发明优选实施例的译码模块的硬件结构示意图。 具体实施方式 下文中将参考附图并结合实施例来详细说明本发明。 需要说明的是, 在不冲突的 情况下, 本申请中的实施例及实施例中的特征可以相互组合。 图 1是 turbo译码的基本原理图, 如图 1所示, 先验信息(¾)及校验比特 1 (ylk) 输入到译码模块 1 (DEC1 )中, 对于采用 long-MAP或者 MAX-long-MAP算法的译码 方法, DEC1中对输入的待译码的码块进行 MAPI计算, 然后将结果输入到交织模块 进行交织后, 输入到译码模块 2 (DEC2) 与输入的校验比特 2 (y2k) 一起进行 MAP2 计算, 结果经解交织模块输出或作为先验信息输入到译码模块 1。 图 2是 turbo译码的硬件架构示意图, 如图 2所示, 该装置主要包括: 输入控制 模块、 系统比特 /校验比特 /先验信息模块、 交织模块、 译码模块 (DEC)、 译码控制模 块和输出控制模块。 其中, 输入控制模块主要负责将 turbo译码器输入的数据按照系统比特、 校验比 特 1、 校验比特 2数据、 系统尾比特、 交织的系统尾比特、 校验 1尾比特和校验 2尾 比特进行区分, 同时产生相关的片选控制信号, 控制系统比特 RAM和校验比特 RAM 的写操作。 系统比特 /校验比特 /先验信息模块分别完成系统比特、校验比特、先验信息的读写 操作。将来自输入控制模块的待译码数据根据译码并行度写入相应的 RAM;在译码启 动后, 按照顺序 /交织地址分别从各自的 RAM中读取数据, 送给译码模块进行译码。 交织模块实时提供交织地址, 以便 turbo译码器在计算 MAP2时能够取得交织后 的系统比特和先验信息, 从而进行当前先验信息的计算, 并将先验信息写入先验信息 存储 RAM中。 译码模块主要根据系统、 校验和先验信息模块输出的数据进行译码, 并将计算得 到的先验信息数据回写到先验信息存储 RAM中, 将译码结果送给输出控制模块。 译码控制模块控制整个 turbo译码核的工作, 负责产生译码启动信号、 码块相关 参数、 数据读写使能、 地址、 乒乓控制信号、 及计算使能等信号。 输出控制模块负责码块译码结果的解交织、 读写控制及相关参数的输出。 以长度为 K的码块为例, turbo译码过程主要包括以下步骤: 步骤 1、 输入的译码数据 (共 3K+12个) 经过输入控制模块的处理, 被拆分成 K 个系统比特、 K个校验比特 1、 K个校验比特 2、 3个系统尾比特、 3个交织的系统尾 比特、 3个校验 1尾比特、 3个校验 2尾比特, 并按照 PU个数, 将其存入对应的 RAM 中。 步骤 2、 数据全部写入后, 启动信号 start将被拉高, 开始多路并行译码。 步骤 3、 MAPI处理: 按照原始地址分别从相应的 RAM中读取系统比特和校验比 特 1, 送入并行 MAP处理单元进行 MAPI计算 (计算第 1次迭代时 MAPI先验信息 取零), 并将计算得到的外信息写入先验信息 RAM中。 在启动译码的同时, 也将启动 交织器, 进行交织地址的计算并加以存储, 为后续 MAP2提前准备交织地址。 步骤 4、 MAP2处理: 把按照原始地址读取的校验比特 2、 交织地址读取的系统比 特和先验信息 (第一次迭代时 MAP2用到的尾比特先验信息取零, 且对应尾比特的相 关数据的读写不参与交织), 送入并行 MAP处理单元进行 MAP2计算, 并将计算得到 的先验信息和硬判结果分别写入先验信息 RAM和译码结果 RAM中。至此,就完成了 一次 turbo迭代译码。 步骤 5、 还可以根据一定的条件判断是否满足迭代终止的条件, 如果满足, 立即 停止迭代译码, 否则返回至步骤 3直到设定的最大迭代次数。 图 3是根据本发明实施例的译码方法的流程图, 如图 3所示, 在对待译码的码块 进行多路并行译码过程中, 在每一次迭代过程中, 每路译码模块在进行译码时 (包括 MAPI计算和 MAP2计算), 该方法主要包括以下步骤 (步骤 S302—步骤 S306): 步骤 S302, 对当前路的待译码的码块, 译码模块采用从前往后递推的方式得到当 前路的所有第一中间变量 (即 alpha), 同时采用从后往前递推的方式得到当前路的所 有第二中间变量 (即 beta); 其中, 第一中间变量可以为 alpha, 而第二中间变量为 beta, 或者反之亦可, 即第 一中间变量为 beta, 第二中间变量为 alpha。 优选地, 在本发明实施例中, 第一中间变 量为 alpha, 而第二中间变量为 beta。 在本发明实施例的优选实施方式中, 为了减少存储器的空间, 可以分别针对第一 中间变量和第二中间变量计算递归需要的分支转移变量 (即 gamma), 对于第一中间 变量, 译码模块采用从前往后递推的方式得到当前路的所有分支转移变量, 并根据得 到的所有分支转移变量从前往后递推得到当前路的所有第一中间变量 (alpha); 同时, 对于第二中间变量, 译码模块采用从后往前递推的方式得到当前路的所有分支转移变 量, 并根据本次得到的所有分支转移变量从后往前递推得到当前路的所有第二中间变 量 (beta)。 直接采用递推公式计算第一中间变量和第二中间变量, 不利用采用硬件流水线的 处理, 并且, 每次第一中间变量和第二中间变量的递归计算包括 gamma与第一中间变 量或第二中间变量的加操作和归一化操作两个部分, 组合电路逻辑的延时也比较大。 因此, 在本发明实施例的优选实施方式中, 每次第一中间变量或第二中间变量的递归 计算分为 2步完成, 先做加操作, 再做归一化处理, 即每次第一中间变量或第二中间 变量的递归计算在 2拍 (elk) 内完成。 在本发明实施例的优选实施方式中, 对同一路的待译码的码块的前后半部分的第 一中间变量和第二中间变量进行分时计算。 例如, 译码模块在递推当前路的待译码的 码块的前半部分的从前往后的第一个第一中间变量 (例如, alpha) 时, 在进行加操作 之后, 在进行归一化操作的同时, 执行递推当前路的待译码的码块的后半部分的从前 往后的第一个第一中间变量 (alpha) 的加操作; 译码模块执行递推前半部分的从前往 后的第二个第一中间变量 (例如, alpha) 的加操作, 同时执行后半部分的从前往后的 第一个第一中间变量 (例如, alpha) 的归一化操作, 然后在执行前半部分的从前往后 的第二个第一中间变量 (alpha) 的归一化操作的同时执行后半部分的从前往后的第二 个第一中间变量 (alpha) 的加操作, 以此循环, 递推得到当前路的所有第一中间变量 ( alpha )。 类似地, 译码模块在递推当前路的待译码的码块的后半部分的从后往前的第一个 第二中间变量 (例如, beta) 时, 在进行加操作之后, 在进行归一化操作的同时, 执 行递推当前路的待译码的码块的前半部分的从后往前的第一个第二中间变量 (beta) 的加操作; 译码模块执行递推后半部分的从后往前的第二个第二中间变量 (beta) 的 加操作, 同时执行前半部分的从后往前的第一个第二中间变量 (beta) 的归一化操作, 并在执行后半部分的从后往前的第二个第二中间变量 (beta) 的归一化操作的同时执 行前半部分的从后往前的第二个第二中间变量 (beta) 的加操作, 以此循环, 递推得 到当前路的所有第二中间变量 (beta)。 采用上述的两种方式递归计算第一中间变量和第二中间变量, 当计算到前半部分 的中间比特对应的第一中间变量后, 在递归计算前半部分的后一半对应的第一中间变 量时, 这部分对应的第二中间变量已计算得到, 因此, 这部分计算得到的第一中间变 量可以不用存储, 在得到第一中间变量后, 直接根据存储的与该位置对应的第二中间 变量以及该位置对应的分支转移度量计算该位置对应的对数似然比(LLR), 同样, 当 后半部分的中间比特对应的第二中间变量后, 在递归计算后半部分的前一半对应的第 二中间变量时, 这部分对应的第一中间变量已计算得到, 因此, 这部分计算得到的第 二中间变量可以不用存储, 在得到第二中间变量后, 直接根据存储的与该位置对应的 第一中间变量以及该位置对应的分支转移度量计算该位置对应的对数似然比 (LLR)。 因此, 为了节约存储空间, 在本发明实施例的优选实施方式中, 在进行上述操作的同 时, 译码模块将与前半部分的前一半的码块对应的各个第一中间变量 (alpha) 以及与 后半部分的前一半的码块对应的各个第一中间变量 (alpha) 存储到存储器中; 译码模 块将与后半部分的后一半的码块对应的各个第二中间变量 (beta) 以及与前半部分的 后一半的码块对应的各个第二中间变量 (beta) 存储到存储器中。 步骤 S304, 所述译码模块根据得到所有所述第一中间变量、 所有所述第二中间变 量以及所述待译码的模块的所有分支转移度量,得到当前路的所有对数似然比(LLR); 例如, 在本实施例中, 译码模块可以在递推与前半部分的后一半码块对应的各个 第一中间变量 (alpha) 以及后半部分的后一半码块对应的各个第一中间变量 (alpha) 时, 每递推得到一个第一中间变量 (alpha) 时, 读取存储的与该位置对应的第二中间 变量 (beta), 并根据该第一中间变量 (alpha) 和第二中间变量 (beta) 以及该位置对 应的分支转移度量(gamma), 得到一个与该位置对应的对数似然比; 而译码模块在递 推与后半部分的前一半码块对应的各个第二中间变量 (beta) 以及前半部分的前一半 码块对应的各个第二中间变量 (beta) 时, 每递推得到一个第二中间变量 (beta) 时, 读取存储的与该位置对应的第一中间变量(alpha), 并根据该第二中间变量(beta)和 第一中间变量 (alpha) 以及该位置对应的分支转移度量 (gamma), 得到一个与该位 置对应的对数似然比。 例如, 可以按照以下方式计算对数似然比: for k = 1: N
LIR(k) = max ( [alpha(k, 0+1) + gamn ia_l(k, 0+1) + beta(k+l, 4+1), alpha(k, 1+1) + gamna_l(k, 1+1) + beta(k+l, 0+1), ...
alpha(k, 2+1) + gamna_l(k, 2+1) + beta(k+l, 1+1), ...
alpha(k, 3+1) + gamna_l(k, 3+1) + beta(k+l, 5+1), -..
alpha(k, 4+1) + gamna_l(k, 4+1) + beta(k+l, 6+1), ...
alpha(k, 5+1) + gamna_l(k, 5+1) + beta(k+l, 2+1), -..
alpha(k, 6+1) + gamna_l(k, 6+1) + beta(k+l, 3+1), -..
alpha(k, 7+1) + gamna_l(k, 7+1) + beta(k+l, 7+1), ...]) max ([alpha(k, 0+1) + gamma_l(k, 0+1) + beta(k+l, 00+1), ...
alpha(k, 1+1) + gamna_l(k, 1+1) + beta(k+l, 4+1), ...
alpha(k, 2+1) + gamna_l(k, 2+1) + beta(k+l, 5+1), ...
alpha(k, 3+1) + gamna_l(k, 3+1) + beta(k+l, 1+1), ..·
alpha(k, 4+1) + gamna_l(k, 4+1) + beta(k+l, 2+1), -..
alpha(k, 5+1) + gamna_l(k, 5+1) + beta(k+l, 6+1), ...
alpha(k, 6+1) + gamna_l(k, 6+1) + beta(k+l, 7+1), -..
alpha(k, 7+1) + gamna_l(k, 7+1) + beta(k+l, 3+1), ...]) ; end 步骤 S306, 所述译码模块根据所有所述对数似然比, 得到当前路输出的先验信息 和译码结果。 例如,在得到对数似然比之后,根据当前计算得到的 LLR和当前输入的系统比特、 先验信息可以计算得到的当前输出的先验信息。 在本实施例中, 在得到各路的译码结果之后, 根据各路的译码结果与待译码的码 块的循环冗余校验(CRC)码进行 CRC校验, 如果校验正确, 则停止迭代, 完成译码 过程, 否则, 利用各路输出的所述先验信息进行下一次的迭代过程。 相关技术中, 没有采用对第一中间变量 (alpha) 和第二中间变量 (beta) 进行同 时的迭代计算, 从而没有解决系统延时过长的问题, 而且在处理当迭代正确的情况下, 不能够实时终止迭代操作, 进一步增加了系统处理时间, 而本实施例采用第一中间变 量 (alpha) 和第二中间变量 (beta) 进行同时的迭代计算的方法, 是系统延时缩短至 原来的二分之一, 同时采用 CRC的检验方式对译码结果进行校验, 如果得到校验正确 的结果, 会及时终止后续的反复迭代过程, 省去了时间成本。 以第一中间变量为 alpha, 第二中间变量为 beta为例, 本发明实施例的并行 turbo 译码过程主要包括以下步骤: 步骤 1 : 按照码块的长度平均分若干个 PU (处理单元, 又称为并行路数, 在本文 1个 PU同时也是 1个滑动窗)准备进行多路并行译码。 对每个 PU又平分成前后两部 分, 分别记作 PU-f (PU的前半部分) 和 PU-b (PU的后半部分); 步骤 2: 设置 PU-f和 PU-b的 alpha和 beta初值 (记为 alpha0、 betaO, 由 alpha0、 betaO迭代得到 alphal、 betal , 再由 alphal、 betal迭代得到 alpha2、 beta2, 依此类推), 以及各自的 overlap (重叠窗长)。 其中, 在 alpha从前往后迭代时, 第 1个 PU的 PU-f 没有 overlap;在 beta从后往前迭代时, 最后 1个 PU的 PU-b没有 overlap; 步骤 3 : 分别利用步骤 1和步骤 2的分段方法, 根据对应的系统比特、 校验比特 和先验信息计算各个 PU的 PU-f和 PU-b的 gamma。 步骤 4: 利用 gamma计算 alpha。 分 2步 (cycle) 实现, 即先计算 alpha+gamma, 再做归一化处理, 得到下一个 alpha。在这里, 进行 PU-f的第 n个 alpha的归一化处理 的同时, 进行 PU-b的第 n个数的 alpha+gamma运算, 保证为了使译码的吞吐率不受 影响, 同时,保存 PU-f和 PU-b的前一半的 alpha的值; beta的处理过程与 alpha类似, 但是保存的是 PU-f和 PU-b的后一半的 beta值; 步骤 5: 当 PU-f或 PU-b计算到一半时, 利用 PU-f或 PU-b的后一半计算得到的 alpha和后一半保存的 beta和对应的分支转移度量 (gamma) 做计算, 得到 LLR (对 数似然比), 然后再根据当前计算得到的 LLR和当前输入的系统比特、 先验信息计算 得到输出的先验信息; 同时, 利用 PU-f或 PU-b的前一半计算得到的 beta和前一半保 存的 alpha和对应的分支转移度量 (gamma) 做计算, 得到 LLR, 并进一步得到输出 的先验信息; 步骤 6: 完成 1次迭代后, 利用 LLR得到硬判结果, 并对其继续 CRC校验, 当 校验错误时, 继续进行下一次的迭代, 直到预先设定的最大迭代次数。 当校验正确时, 立即停止迭代, 准备进行下一个 CB (码块) 的译码。 采用本发明实施例提供的上述方法, 与现有的并行译码方法相比, 在每次迭代时 总的 cycle数(时钟周期数)不变的情况下, 大大缩短了 turbo译码的 alpha, beta迭代 时的 ACS关键路径的长度 (由原来的 1个 elk完成加比选操作变成了 2个 elk完成, 更有利于 FPGA和 ASIC实现, 硬件电路的频率和吞吐率也将更高); alpha和 beta分 别从前、后同时对撞计算使得每次迭代时的译码延时减少到原来的 1/2;在信道质量较 好时, 利用 CRC的迭代终止, 使得译码的迭代次数又成倍的减少 (比如, 最大迭代 8 次, 实际只迭代 1次就正确, 增加利用 CRC迭代终止后, 译码时间仅为原来的 1/8)。 同样以码块长度为 K, 4路并行为例, 整体的处理过程如图 4所示, 各路并行译 码。 具体到每一路, 先进行 overlap部分的计算 (虚线箭头), 然后进行有效数据的计 算 (实线箭头), 如图 4所示。 在 MAPI处理时, 分别从每一路的两头同时计算 alpha 和 beta。 以比较典型的第 2路为例, 第 3路与第 2路相同, 第 1路前半部分计算 alpha 时没有 overlap, 第 4路后半部分计算 beta的时候, overlap就是整个码块的尾比特。 考虑到每路的重叠部分 overlap , 相当于在时间上分别先后从码块 K 的第
(K/4-overlap) 和第 (3K/8-overlap) 处开始, 按照地址依次加 1的规律同时读取相应 的系统比特、 校验比特和先验信息, 按照公式 (1)计算 gamma。 这样按照如下次序得到 gamma(K/4-overlap) 、 gamma(3K/8-overlap) 、 gamma(K/4-overlap+ 1 ) 、 gamma(3K/8-overlap+l),...,gamma(3K/8-l)、gamma(K/2-l),得到 gamma后,按照公式(2) 由 gamma依次得到 K/4个对应的 alpha, 如图 5所示。 由于 alpha 的计算采用递推公式, 不利于采用硬件流水线的处理方式。 并且每次 alpha的计算包括 gamma+alpha和归一化两部分, 组合电路逻辑延时比较大, 也不利 于 FPGA或 ASIC的硬件实现。 因此, 在本实施例中, 把 alpha的计算分成 2步完成, 先做加法, 再做归一化处理。 因此, 在本实施例中,对同 1路的前、 后半部分 alpha计 算(已经分 2拍完成)采用了分时计算。具体如下,第 1个 elk完成 alpha ( K/4-overlap ) 的加操作,第 2个 elk完成 alpha(K/4-overlap)的归一化操作(得到 alpha( K/4-overlap ) ), 同时完成 alpha (3K/8-overlap) 的加操作, 第 3个 elk完成 alpha (3K/8-overlap) 的归 一化操作 (得到 alpha (3K/8-overlap)), 同时完成 alpha (K/4-overlap+l ) 的加操作, 依此类推, 直到 (K/4+overlap) 个 elk后, 得到当前路所有的 alpha值 (包括 overlap 部分的 alpha, 共有 K/4+overlap个)。 beta的计算过程与 alpha类似而且同时,只是方向相反,在时间上分别先后从码块 的第 (3K/8-l+overlap)和 (K/2-l+overlap) 处开始, 按照地址减 1的规律读取相应的 系统比特、 校验比特和先验信息, 按照公式 (1 ) 计算 gamma。 这样按照如下次序得 至 lj gamma(3 K/ 8 - 1 +overlap) 、 gamma(K/2- 1 +overlap) 、 gamma(3 K/ 8 -2+overlap) 、 gamma(K/2-2+overlap), ... ,gamma(K/4) gamma(3K/8) , 再利用得到的 gamma, 按照与 alpha计算相似的处理方法,把每次 beta的计算拆成 2步完成的方法,得到当前路所有 的 beta值, 如图 5所示。 本实施例采用 alpha和 beta的对撞计算, 不需要保存当前路所有的 alpha和 beta 值, 只保存 K/8个 alpha和 K/8个 beta值 (alpha和 beta可以保存在 1个 K/4深度的 RAM里)。 其中, alpha需要保存第 K/4处到第 5K/16-1处和第 3K/8处到 7K/16-1处 的值; beta需要保存第 3K/8-1处到 5K/16处的值和第 K/2-1处到 7K/16处的值。当 alpha 先后分别递增计算到第 5K/16 处和 7K/16 处时, beta恰好先后分别递减计算到第 5K/16-1处和 7K/16-1处。这时每当同时计算完 1个 alpha和 beta,利用从 alpha和 beta 的存储 RAM读出的对应值再结合该位置对应的分支转移度量 (gamma) 进行计算, 可以同时得出 2个 LLR, 从而使得译码时间缩短约 1/2。 计算完 LLR后, 对应每个 LLR计算得出先验信息。 MAPI处理后, 对先验信息 存储 RAM采取顺序写交织读的方法实现其交织; MAP2处理后,对先验信息存储 RAM 采取交织写顺序读的方法实现其解交织。 进行完 1次迭代后 (包括 MAPI和 MAP2), 利用 LTE的码块分割以及附加 CRC 校验码的特征,对每次迭代后的硬判数据进行 CRC校验,如果校验正确,则停止迭代。 否则, 利用迭代后产生的新的先验信息, 与接收到的系统比特和校验比特一起进行下 次的迭代。 根据本发明实施例还提供了一种 turbo译码装置, 该装置用于实施本发明实施例 提供的上述方法。 根据本发明实施例的 turbo译码装置对图 2所示的 turbo译码装置进行改进, 其中 的译码模块采用多路并行的译码模块, 图 6是根据本发明实施例的 turbo译码装置中, 每个译码模块的结构示意图,如图 6所示,每路译码模块可以包括:递推模块 10、LLR 计算模块 20以及硬判模块 30。 其中, 递推模块 10, 设置为对当前路的待译码的码块, 采用从前往后递推的方式 得到当前路的所有第一中间变量 (例如, alpha ) , 同时采用从后往前递推的方式得到 当前路的所有第二中间变量 (例如, beta) ; LLR计算模块 20, 连接至递推模块 10, 设置为根据得到所有第一中间变量(alpha)、 所有第二中间变量(beta) 以及所述待译 码的模块的所有分支转移度量(gamma) , 得到当前路的所有对数似然比 LLR, 并根据 所有 LLR, 输出先验信息; 硬判模块 30, 连接至 LLR计算模块 20, 设置为对 LLR计 算模块得到的所有 LLR执行硬判, 将硬判结果作为译码结果输出。 在本发明实施例的优选实施方式中, 如图 7所示, 递推模块 10可以包括: 第一分 支转移变量计算模块 100, 设置为采用从前往后递推的方式得到当前路的所有分支转 移变量; 第一中间变量计算模块 102, 设置为根据第一分支转移变量计算模块 100得 到的所有分支转移变量从前往后递推得到当前路的所有第一中间变量 (alpha) ; 第二 分支转移变量计算模块 104, 设置为采用从后往前递推的方式得到当前路的所有分支 转移变量; 第二中间变量计算模块 106, 设置为根据第二分支转移变量计算模块 104 得到的所有分支转移变量从后往前递推得到当前路的所有第二中间变量 (beta)。 其中, 第一中间变量计算模块 102可以包括: 第一加操作单元和第一归一化操作 单元,所述第一加操作单元设置为在递推各个所述第一中间变量的过程中执行加操作; 所述第一归一化操作单元设置为在递推各个所述第一中间变量的过程中执行归一化操 作。 其中, 在第一加操作单元执行递推当前路的待译码的码块的前半部分的从前往后 的第一个第一中间变量 (例如, alpha) 时的加操作之后, 在第一归一化操作单元执行 归一化操作的同时, 第一操作单元执行递推当前路的待译码的码块的后半部分的从前 往后的第一个第一中间变量 (alpha) 的加操作; 然后, 第一操作单元执行递推前半部 分的从前往后的第二个第一中间变量 (例如, alpha) 的加操作, 同时第一归一化操作 单元执行后半部分的从前往后的第一个第一中间变量 (例如, alpha) 的归一化操作, 然后在第一归一化操作单元执行前半部分的从前往后的第二个第一中间变量 (alpha) 的归一化操作的同时第一加操作单元执行后半部分的从前往后的第二个第一中间变量 ( alpha) 的加操作, 以此循环, 递推得到当前路的所有第一中间变量 (alpha)。 第二中间变量计算模块 106可以包括: 第二加操作单元和第二归一化操作单元, 所述第二加操作单元设置为在递推各个所述第二中间变量的过程中执行加操作; 所述 第二归一化操作单元设置为在递推各个所述第二中间变量的过程中执行归一化操作。 例如, 在第二加操作单元在执行递推当前路的待译码的码块的后半部分的从后往 前的第一个第二中间变量 (例如, beta) 的加操作, 在第二归一化操作执行归一化操 作的同时, 第二操作单元执行递推当前路的待译码的码块的前半部分的从后往前的第 一个第二中间变量 (beta) 的加操作; 然后, 第二加操作单元执行递推后半部分的从 后往前的第二个第二中间变量 (beta) 的加操作, 同时第二归一化操作单元执行前半 部分的从后往前的第一个第二中间变量 (beta) 的归一化操作, 并在第二归一化操作 单元执行后半部分的从后往前的第二个第二中间变量 (beta) 的归一化操作的同时第 二加操作单元执行前半部分的从后往前的第二个第二中间变量 (beta) 的加操作, 以 此循环, 递推得到当前路的所有第二中间变量 (beta)。 在本发明实施例的一种优选实施方式中, 如图 8所示, 每路译码模块还可以包括 一个存储模块 40, 设置为存储所述递推模块 10递推得到的与所述前半部分的前一半 的码块对应的各个所述第一中间变量以及与所述后半部分的前一半的码块对应的各个 所述第一中间变量, 与所述后半部分的后一半的码块对应的各个所述第二中间变量以 及与所述前半部分的后一半的码块对应的各个所述第二中间变量。 在本发明实施例的一个优选实施方式中, 该装置还可以对图 2中的输出控制模块 进行改进, 该输出控制模块设置为根据各路所述译码模块输出的译码结果与待译码的 码块的循环冗余校验码进行 CRC校验, 如果校验正确, 则停止迭代, 完成译码过程, 否则, 利用各路所述译码模块输出的所述先验信息进行下一次的迭代过程。 在本发明实施例的一种优选实施方式中, 也可以分别设置与第一中间变量和第二 变量中间对应的两个 LLR计算模块 20, 相应的硬判模块也可以设置两个。 图 9根据 本发明优选实施例的译码模块 30的结构示意图, 如图 9所示, 系统信息 (sys)、校验信 息(对于 MAPI计算为校验信息 1,对于 MAP2计算为校验信息 2)和先验信息(apri) 输入到针对 alpha的 gamma计算模块 (相当于第一分支转移变量计算模块)和针对 beta 的 gamma计算模块 (相当于第二分支转移变量计算模块), 第一分支转移变量计算模 块从前往后的递归出 LLR输入到 alpha计算模块 (相当于第一中间变量计算模块), alpha计算模块计算出该路的 alpha, —部分存储到数据 RAM中, 一部分输入到 LLR 计算模块, LLR计算模块根据输入的 alpha和数据 RAM中存储的 beta计算 LLR, 并 输出先验信息 (ext_apri), 并将计算得到的 LLR输出到硬判模块, 硬判模块根据输入 的 LLR、 系统信息和先验信息 (apri)。 同样, 对于 beta进行相应的处理。 从以上的描述中, 可以看出, 通过本发明实施例提供的技术方案, 采用了 alpha 和 beta的同时计算, 缩短了约 1/2的译码延时; 同时, 在每 1路的关键路径 alpha和 beta的计算上,通过在控制上的改进,把译码的关键路径 alpha/beta的迭代计算可以由 原来只能采用的一级流水线变成两级流水线但不降低译码器的吞吐率, 大大提高了 turbo译码器的硬件可实现性和稳定性,也提高了吞吐率。并且,在硬件资源上, alpha、 beta对撞的计算方法, 只是增加了部分寄存器资源, 并没有增加 RAM资源, 对整个 设计电路的规模也没有产生大的影响。 显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所 组成的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而, 可以 将它们存储在存储装置中由计算装置来执行, 并且在某些情况下, 可以以不同于此处 的顺序执行所示出或描述的步骤, 或者将它们分别制作成各个集成电路模块, 或者将 它们中的多个模块或步骤制作成单个集成电路模块来实现。 这样, 本发明不限制于任 何特定的硬件和软件结合。 以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的 任何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。

Claims

权 利 要 求 书
1. 一种 TURBO译码的方法, 在对待译码的码块进行多路并行译码过程中, 在每 一次迭代过程中, 每路译码模块在进行译码时, 所述方法包括:
对当前路的待译码的码块, 所述译码模块采用从前往后递推的方式得到当 前路的所有第一中间变量, 同时采用从后往前递推的方式得到当前路的所有第 二中间变量;
所述译码模块根据得到所有所述第一中间变量、 所有所述第二中间变量以 及所述待译码的模块的所有分支转移度量,得到当前路的所有对数似然比 LLR; 所述译码模块根据所有所述对数似然比, 得到当前路输出的先验信息和译 码结果。
2. 根据权利要求 1所述的方法, 其中, 所述译码模块采用从前往后递推的方式得 到当前路的所有第一中间变量, 同时采用从后往前递推的方式得到当前路的所 有第二中间变量包括:
所述译码模块采用从前往后递推的方式得到所述当前路的所有分支转移变 量, 并根据得到的所有所述分支转移变量从前往后递推得到所述当前路的所有 所述第一中间变量; 同时,
所述译码模块采用从后往前递推的方式得到所述当前路的所有分支转移变 量, 并根据本次得到的所有所述分支转移变量从后往前递推得到所述当前路的 所有所述第二中间变量。
3. 根据权利要求 2所述的方法, 其中, 所述译码模块根据得到的所有所述分支转 移变量从前往后递推得到所述当前路的所有所述第一中间变量包括:
所述译码模块在递推所述当前路的待译码的码块的前半部分的从前往后的 第一个所述第一中间变量时, 在进行加操作之后, 在进行归一化操作的同时, 执行递推所述当前路的待译码的码块的后半部分的从前往后的第一个所述第一 中间变量的加操作;
所述译码模块执行递推所述前半部分的从前往后的第二个所述第一中间变 量的加操作, 同时执行所述后半部分的从前往后的第一个所述第一中间变量的 归一化操作, 然后在执行所述前半部分的从前往后的第二个所述第一中间变量 的归一化操作的同时执行所述后半部分的从前往后的第二个所述第一中间变量 的加操作, 以此循环, 递推得到所述当前路的所有所述第一中间变量。
4. 根据权利要求 3所述的方法, 其中, 所述译码模块根据得到的所有所述分支转 移变量从后往前递推得到所述当前路的所有所述第二中间变量包括:
所述译码模块在递推所述当前路的待译码的码块的后半部分的从后往前的 第一个所述第二中间变量时, 在进行加操作之后, 在进行归一化操作的同时, 执行递推所述当前路的待译码的码块的前半部分的从后往前的第一个所述第二 中间变量的加操作;
所述译码模块执行递推所述后半部分的从后往前的第二个所述第二中间变 量的加操作, 同时执行所述前半部分的从后往前的第一个所述第二中间变量的 归一化操作, 并在执行所述后半部分的从后往前的第二个所述第二中间变量的 归一化操作的同时执行所述前半部分的从后往前的第二个所述第二中间变量的 加操作, 以此循环, 递推得到所述当前路的所有所述第二中间变量。
5. 根据权利要求 4所述的方法, 其中, 所述方法还包括: 所述译码模块将与所述 前半部分的前一半的码块对应的各个所述第一中间变量以及与所述后半部分的 前一半的码块对应的各个所述第一中间变量存储到存储器中; 所述译码模块将 与所述后半部分的后一半的码块对应的各个所述第二中间变量以及与所述前半 部分的后一半的码块对应的各个所述第二中间变量存储到存储器中。
6. 根据权利要求 5所述的方法, 其中, 所述译码模块根据得到所有所述第一中间 变量、 所有所述第二中间变量以及所述待译码的模块的所有分支转移度量, 得 到当前路的所有对数似然比包括:
所述译码模块在递推与所述前半部分的后一半码块对应的各个所述第一中 间变量以及所述后半部分的后一半码块对应的各个所述第一中间变量时, 每递 推得到一个所述第一中间变量时, 读取存储的与该位置对应的所述第二中间变 量,并根据该第一中间变量、该第二中间变量以及该位置对应的分支转移度量, 得到一个与该位置对应的所述对数似然比;
所述译码模块在递推与所述后半部分的前一半码块对应的各个所述第二中 间变量以及所述前半部分的前一半码块对应的各个所述第二中间变量时, 每递 推得到一个所述第二中间变量时, 读取存储的与该位置对应的所述第一中间变 量, 并根据该第二中间变量、 第一中间变量以及该位置对应的分支转移度量, 得到一个与该位置对应的所述对数似然比。
7. 根据权利要求 1至 6中任一项所述的方法,其中,在得到各路的译码结果之后, 所述方法还包括:
根据各路的所述译码结果与待译码的码块的循环冗余校验 CRC 码进行 CRC校验, 如果校验正确, 则停止迭代, 完成译码过程, 否则, 利用各路输出 的所述先验信息进行下一次的迭代过程。
8. —种 TURBO译码的装置, 包括: 多路译码模块, 其中, 每路所述译码模块包 括:
递推模块, 设置为对当前路的待译码的码块, 采用从前往后递推的方式得 到当前路的所有第一中间变量, 同时采用从后往前递推的方式得到当前路的所 有第二中间变量;
LLR计算模块, 设置为根据得到所有所述第一中间变量、 所有所述第二中 间变量以及所述待译码的模块的所有分支转移度量, 得到当前路的所有对数似 然比 LLR, 并根据所有所述 LLR, 输出先验信息;
硬判模块, 设置为对所述 LLR计算模块得到的所有所述 LLR执行硬判, 将硬判结果作为译码结果输出。
9. 根据权利要求 8所述的装置, 其中, 所述递推模块包括: 第一分支转移变量计算模块, 设置为采用从前往后递推的方式得到所述当 前路的所有分支转移变量;
第一中间变量计算模块, 设置为根据所述第一分支转移变量计算模块得到 的所有所述分支转移变量从前往后递推得到所述当前路的所有所述第一中间变 第二分支转移变量计算模块, 设置为采用从后往前递推的方式得到所述当 前路的所有分支转移变量;
第二中间变量计算模块, 设置为根据所述第二分支转移变量计算模块得到 的所有所述分支转移变量从后往前递推得到所述当前路的所有所述第二中间变
根据权利要求 9所述的装置, 其中, 所述第一中间
操作单元和第一归一化操作单元, 其中,
所述第一加操作单元设置为在递推各个所述第
操作; 所述第一归一化操作单元设置为在递推各个所述第一中间变量的过程中执 行归一化操作。
11. 根据权利要求 9所述的装置, 其中, 所述第二中间变量计算模块包括: 第二加 操作单元和第二归一化操作单元, 其中,
所述第二加操作单元设置为在递推各个所述第二中间变量的过程中执行加 操作;
所述第二归一化操作单元设置为在递推各个所述第二中间变量的过程中执 行归一化操作。
12. 根据权利要求 8至 10中任一项所述的装置, 其中, 所述译码模块还包括: 存储模块, 设置为存储所述递推模块递推得到的与所述前半部分的前一半 的码块对应的各个所述第一中间变量以及与所述后半部分的前一半的码块对应 的各个所述第一中间变量, 与所述后半部分的后一半的码块对应的各个所述第 二中间变量以及与所述前半部分的后一半的码块对应的各个所述第二中间变
13. 根据权利要求 8至 10中任一项所述的装置, 其中, 所述装置还包括:
输出控制模块, 设置为根据各路所述译码模块输出的译码结果与待译码的 码块的循环冗余校验 CRC码进行 CRC校验, 如果校验正确, 则停止迭代, 完 成译码过程, 否则, 利用各路所述译码模块输出的所述先验信息进行下一次的 迭代过程。
PCT/CN2012/073593 2011-04-26 2012-04-06 Turbo译码的方法及装置 WO2012146124A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
RU2013152333/08A RU2571597C2 (ru) 2011-04-26 2012-04-06 Способ и устройство для декодирования турбокода
EP12776607.9A EP2704330A4 (en) 2011-04-26 2012-04-06 TURBODE CODING METHOD AND DEVICE

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201110105086.0 2011-04-26
CN201110105086.0A CN102158235B (zh) 2011-04-26 2011-04-26 turbo译码的方法及装置

Publications (1)

Publication Number Publication Date
WO2012146124A1 true WO2012146124A1 (zh) 2012-11-01

Family

ID=44439457

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2012/073593 WO2012146124A1 (zh) 2011-04-26 2012-04-06 Turbo译码的方法及装置

Country Status (4)

Country Link
EP (1) EP2704330A4 (zh)
CN (1) CN102158235B (zh)
RU (1) RU2571597C2 (zh)
WO (1) WO2012146124A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113691263A (zh) * 2021-08-19 2021-11-23 Oppo广东移动通信有限公司 多比特并行校验方法及装置、存储介质及Turbo译码器

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103812510A (zh) * 2012-11-15 2014-05-21 中兴通讯股份有限公司 译码方法及装置
CN103475380A (zh) * 2013-09-06 2013-12-25 清华大学 用于图像处理器的并行Turbo 译码方法
CN103986557B (zh) * 2014-05-23 2017-06-13 西安电子科技大学 低路径延迟的LTE Turbo码并行分块译码方法
CN107733446B (zh) * 2016-08-12 2019-06-07 华为技术有限公司 译码方法及设备、译码器
CN109379088B (zh) * 2018-12-13 2022-03-08 浙江天则通信技术有限公司 一种并行Turbo码迭代译码的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009158341A2 (en) * 2008-06-27 2009-12-30 Freescale Semiconductor Inc. Device having turbo decoding capabilities and a method for turbo decoding
CN101964665A (zh) * 2010-10-22 2011-02-02 上海交通大学 turbo解码中基于Log-MAP的译码方法及其译码装置
CN102340320A (zh) * 2011-07-08 2012-02-01 电子科技大学 卷积Turbo码双向并行译码方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10012874A1 (de) * 2000-03-16 2001-09-27 Infineon Technologies Ag Turbo-Decodierer und Turbo-Decodierverfahren
JP4185314B2 (ja) * 2002-06-07 2008-11-26 富士通株式会社 情報記録再生装置、光ディスク装置及び、データ再生方法
KR100703307B1 (ko) * 2002-08-06 2007-04-03 삼성전자주식회사 터보 복호화 장치 및 방법
CN1682449A (zh) * 2002-09-18 2005-10-12 皇家飞利浦电子股份有限公司 使用数据窗口来解码数据的方法
DE10310812B4 (de) * 2003-03-12 2007-11-22 Infineon Technologies Ag Dekodiervorrichtung, Trellis-Prozessor und Verfahren
KR100606023B1 (ko) * 2004-05-24 2006-07-26 삼성전자주식회사 고속 터보 복호화 장치
US7925964B2 (en) * 2006-12-22 2011-04-12 Intel Corporation High-throughput memory-efficient BI-SOVA decoder architecture
CN101026439B (zh) * 2007-02-07 2012-08-29 重庆重邮信科通信技术有限公司 一种提高Turbo码译码速率的译码方法
CN101651458A (zh) * 2008-08-13 2010-02-17 华为技术有限公司 Turbo并行译码方法、装置及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009158341A2 (en) * 2008-06-27 2009-12-30 Freescale Semiconductor Inc. Device having turbo decoding capabilities and a method for turbo decoding
CN101964665A (zh) * 2010-10-22 2011-02-02 上海交通大学 turbo解码中基于Log-MAP的译码方法及其译码装置
CN102340320A (zh) * 2011-07-08 2012-02-01 电子科技大学 卷积Turbo码双向并行译码方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113691263A (zh) * 2021-08-19 2021-11-23 Oppo广东移动通信有限公司 多比特并行校验方法及装置、存储介质及Turbo译码器
CN113691263B (zh) * 2021-08-19 2024-02-27 Oppo广东移动通信有限公司 多比特并行校验方法及装置、存储介质及Turbo译码器

Also Published As

Publication number Publication date
CN102158235A (zh) 2011-08-17
CN102158235B (zh) 2016-11-23
RU2571597C2 (ru) 2015-12-20
EP2704330A4 (en) 2014-12-17
EP2704330A1 (en) 2014-03-05
RU2013152333A (ru) 2015-06-10

Similar Documents

Publication Publication Date Title
KR101225016B1 (ko) Lte에서 병렬 터보 디코딩의 방법 및 장치
US6563877B1 (en) Simplified block sliding window implementation of a map decoder
WO2012146124A1 (zh) Turbo译码的方法及装置
KR20120090856A (ko) 반복적 디코더 및 반복적 디코딩 방법
US7530011B2 (en) Turbo decoding method and turbo decoding apparatus
US6799295B2 (en) High speed turbo codes decoder for 3G using pipelined SISO log-map decoders architecture
JP2001267938A (ja) パラレル化されたスライディングウィンドウ処理によるmapデコーディング
KR20080098391A (ko) 양방향 슬라이딩 윈도우 아키텍처를 갖는 map 디코더
US8433004B2 (en) Low-latency viterbi survivor memory architecture and method using register exchange, trace-back, and trace-forward
US8112698B2 (en) High speed turbo codes decoder for 3G using pipelined SISO Log-MAP decoders architecture
US6950975B2 (en) Acceleration of convergence rate with verified bits in turbo decoding
US8402342B2 (en) Method and system for cyclic redundancy check
US20130007568A1 (en) Error correcting code decoding device, error correcting code decoding method and error correcting code decoding program
US8332720B2 (en) Apparatus and method for decoding in mobile communication system
US20050149836A1 (en) Maximum a posteriori probability decoding method and apparatus
CN109245846B (zh) 一种阶梯码解码方法和阶梯码解码装置
CN113872615A (zh) 一种可变长度的Turbo码译码器装置
US9325351B2 (en) Adaptive multi-core, multi-direction turbo decoder and related decoding method thereof
US7120851B2 (en) Recursive decoder for switching between normalized and non-normalized probability estimates
CN112332868A (zh) 一种基于DVB-RCS2的turbo并行译码方法
EP1695444B1 (en) A decoder
TWI565246B (zh) 迴旋編碼的解碼方法
US7917834B2 (en) Apparatus and method for computing LLR
CA2730991A1 (en) Method and system for cyclic redundancy check
US8413033B2 (en) Device and method for calculating backward state metrics of a trellis

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12776607

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2012776607

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2013152333

Country of ref document: RU

Kind code of ref document: A