WO2009077340A1 - Viterbi decoder - Google Patents
Viterbi decoder Download PDFInfo
- Publication number
- WO2009077340A1 WO2009077340A1 PCT/EP2008/066779 EP2008066779W WO2009077340A1 WO 2009077340 A1 WO2009077340 A1 WO 2009077340A1 EP 2008066779 W EP2008066779 W EP 2008066779W WO 2009077340 A1 WO2009077340 A1 WO 2009077340A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- operand
- bits
- bit
- sequence
- replacing
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 3
- 239000013598 vector Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 3
- 230000010485 coping Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4161—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4161—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
- H03M13/4169—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0054—Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms
Definitions
- the present invention relates to a Viterbi decoder.
- Viterbi decoding is a decoding technique for decoding convolutional codes which process incoming bits in streams.
- a feature of such codes is that the encoding of any bit is strongly influenced by the bits that preceded it (that is, the memory of past bits).
- a convolutional decoder takes into account such memory when trying to estimate the most likely sequence of data that produced a received sequence of code bits.
- the Viterbi decoding algorithm compares, at each bit interval, the actual received code bits with the code bits that might have been generated for each possible memory state transition.
- the algorithm consists of a forward pass through a trellis decoder which provides a relatively small number of candidate possible sequences. This is followed by a trace-back stage to calculate the most likely decoded symbol. In this context, each symbol represents only one uncoded bit.
- Viterbi decoding There are many dedicated hardware solutions for Viterbi decoding. As an alternative, it is known to implement a software solution where a processor executes instructions for accelerating algorithms. The advantage of these is that they represent a small incremental hardware cost, sharing memory and register infrastructure for storing and fetching operands etc. that the processor already utilises.
- a method of decoding a stream of encoded bits received via a transmission channel to produce decoded bits comprising: storing a first operand comprising a sequence of bits output from a trace- back execution unit; storing a second operand comprising a sequence of history bits generated by a forward trellis iteration in the Viterbi decoder; generating a result operand by using a set of bits of the first operand to select a bit from the second operand, and replacing a bit of the first operand with the selected bit from the second operand, wherein a sequence of decoded bits is produced by carrying out the steps of using and replacing multiple times.
- Another aspect of the invention provides a method of processing encoded bits received via a transmission channel, the method comprising: executing an instruction in a processor, the instruction defining a first register holding a first operand, a second register holding a second operand and a destination register for holding a result, wherein execution of the instruction comprising: storing in the first register a first operand comprising a sequence of bits output from a trace-back execution unit; storing in the second register a second operand comprising a sequence of history bits generated by a forward trellis iteration in the Viterbi decoder; and generating a bit of a result operand to be held in the destination register by using a set of bits of the first operand to select a bit from the second operand and replacing a bit of the first operand with the selected bit from the second operand.
- the instruction is executed multiple times. Each time a different history vector is used as input and one more (decoded) bit is shifted into the result operand.
- a further aspect of the invention provides an execution unit for executing a Viterbi trace-back instruction, the execution unit comprising: a store holding a first operand comprising a sequence of bits output from the execution unit; a second store holding a second operand comprising a sequence of history bits generated by a forward trellis iteration in a Viterbi decoder; a destination store for holding a result operand; selection means for selecting a bit from the second operand using a set of bits from the first operand; and replacement means for replacing a bit of the first operand with the selected bit from the second operand.
- a still further aspect of the invention provides a Viterbi decoder which uses an execution unit as defined hereinabove, with a forward trellis iteration stage.
- Figure 1 is a schematic block diagram showing a Viterbi decoder
- FIG. 2 is a schematic diagram showing a Viterbi trace-back execution unit.
- a highly simplified schematic diagram of a Viterbi decoder is shown in Figure 1.
- An incoming stream of received bits is supplied to a forward trellis decode stage 4 which operates on a p-state vector per decoded bit.
- the forward trellis stage 4 generates each iteration a vector of history bits which are stored to a memory 6.
- the full sequence of history vectors expresses all of the candidate sequences.
- the history vectors provide as many candidate references as there are states.
- the history bits are supplied to a trace-back stage 8 which is described in more detail in the following and which produces a stream of decoded bits.
- the trace- back stage 8 implements an instruction which is executed by a processor in which the Viterbi decoder is provided.
- the Viterbi trace-back instruction is a single-cycle register-to-register processor instruction designed to accelerate the trace-back phase of the Viterbi algorithm.
- the instruction processes 64-bit operands, but it is scalable in that it can process a N-bit history vector in each cycle, taking two N-bit operands and generating a single N-bit result, where n is typically the width of the processor's data path.
- Figure 2 illustrates the trace-back stage 8 in more detail.
- a first store 10 holds a first operand SRCO.
- the second store 12 receives a second operand SRC1 which is a vector of history bits.
- a third store 14 holds a result operand.
- the first operand is loaded from the result operand at the end of each cycle of operation of the trace-back stage. Initially, it can be loaded with "don't care" states.
- the outputs of the second store 12 are supplied to a multiplexer 16 which is controlled by a set of bits from the first operand SRCO, in this case bits 0:5. Based on these bits, the multiplexer 16 selects one of the 64 input bits and supplies it to a shift unit 18.
- the shift unit 18 shifts the bits of the first operand SRCO left by one bit and places the selected bit at bit position zero to generate a 64 bit result operand.
- the instruction is executed 64 times to generate a 64-bit set of decoded bits. For example, this could be expressed in software by placing the instruction in a 'for' loop.
- results are saved every 64 traceback iterations, using software to do this.
- Outputting the results 64-bits at a time using a normal "store" instruction is highly flexible and efficient since it is only necessary every 64 iterations.
- bits of the first operand which are used to control the multiplexer 16 are the least significant M bits, where N is 2 M .
- bits 6 and 7 of the bit sequence in the first store 10 should be used to determine which 64 bits of each 256 bit history vector should be fetched and supplied to the second store 12. In this way, the Viterbi trace-back instruction can be used on 256 state convolutional code data.
- the described embodiments of the present invention provide a significantly improved Viterbi trace-back instruction which allows an entire N-bit history vector to be processed in a single cycle, i.e. each cycle gives you one new decoded bit. Moreover, the hardware cost of the dedicated logic is very small rendering this a particularly area efficient solution to Viterbi trace-back processing.
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
Claims
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1010462.8A GB2467885B (en) | 2007-12-14 | 2008-12-04 | Viterbi decoder |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0724418.9A GB0724418D0 (en) | 2007-12-14 | 2007-12-14 | Viterbi decoder |
GB0724418.9 | 2007-12-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009077340A1 true WO2009077340A1 (en) | 2009-06-25 |
Family
ID=39048107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2008/066779 WO2009077340A1 (en) | 2007-12-14 | 2008-12-04 | Viterbi decoder |
Country Status (3)
Country | Link |
---|---|
GB (2) | GB0724418D0 (en) |
TW (1) | TW200935760A (en) |
WO (1) | WO2009077340A1 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0409205A2 (en) * | 1989-07-18 | 1991-01-23 | Sony Corporation | Viterbi decoder |
WO2007021057A1 (en) * | 2005-08-19 | 2007-02-22 | Electronics And Telecommunications Research Institute | Viterbi decoder and method thereof |
-
2007
- 2007-12-14 GB GBGB0724418.9A patent/GB0724418D0/en not_active Ceased
-
2008
- 2008-12-03 TW TW097146909A patent/TW200935760A/en unknown
- 2008-12-04 GB GB1010462.8A patent/GB2467885B/en active Active
- 2008-12-04 WO PCT/EP2008/066779 patent/WO2009077340A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0409205A2 (en) * | 1989-07-18 | 1991-01-23 | Sony Corporation | Viterbi decoder |
WO2007021057A1 (en) * | 2005-08-19 | 2007-02-22 | Electronics And Telecommunications Research Institute | Viterbi decoder and method thereof |
Also Published As
Publication number | Publication date |
---|---|
GB0724418D0 (en) | 2008-01-30 |
TW200935760A (en) | 2009-08-16 |
GB2467885A (en) | 2010-08-18 |
GB2467885B (en) | 2012-07-11 |
GB201010462D0 (en) | 2010-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7765459B2 (en) | Viterbi decoder and viterbi decoding method | |
EP1841116A3 (en) | Decoding method for tail-biting convolutional codes using a search-depth Viterbi algorithm | |
US8255780B2 (en) | Scalable VLIW processor for high-speed viterbi and trellis coded modulation decoding | |
US7043682B1 (en) | Method and apparatus for implementing decode operations in a data processor | |
US20050157823A1 (en) | Technique for improving viterbi decoder performance | |
US7277507B2 (en) | Viterbi decoder | |
MXPA02003937A (en) | High speed acs unit for a viterbi decoder. | |
US8301990B2 (en) | Programmable compute unit with internal register and bit FIFO for executing Viterbi code | |
US7617440B2 (en) | Viterbi traceback initial state index initialization for partial cascade processing | |
US7958437B2 (en) | MAP detector with a single state metric engine | |
WO2009077340A1 (en) | Viterbi decoder | |
Hosemann et al. | Hardware-software codesign of a 14.4 MBit-64 state-Viterbi decoder for an application-specific digital signal processor | |
Berger et al. | Real-time software implementation of an IEEE 802.11 a baseband receiver on Intel multicore | |
US20030120993A1 (en) | Viterbi decoder using restructured trellis | |
JP6552765B2 (en) | Decryption device | |
JP4949268B2 (en) | Programmable signal and processing circuit and depuncturing method | |
Engin et al. | Viterbi decoding on a coprocessor architecture with vector parallelism | |
JP4633759B2 (en) | Viterbi decoder | |
KR100414152B1 (en) | The Processing Method and Circuits for Viterbi Decoding Algorithm on Programmable Processors | |
US20130266096A1 (en) | Viterbi decoder for decoding convolutionally encoded data stream | |
KR100726171B1 (en) | Apparatus and method for viterbi decoding | |
JP5708210B2 (en) | Processor | |
US20040054958A1 (en) | Viterbi decoder | |
Laddha et al. | Implementation of Adaptive Viterbi Decoder through FPGA | |
WO2010064205A1 (en) | System and method for viterbi decoding using application specific extensions |
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: 08861790 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 1010462 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20081204 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1010462.8 Country of ref document: GB |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 08861790 Country of ref document: EP Kind code of ref document: A1 |