decoder of punctured codes is commonly implemented in such a way: A depuncturer, which transforms the input stream into the stream which looks like an original (non punctured) stream with ERASE marks at the places where bits were erased. A basic viterbi decoder understanding these ERASE marks (that is, not using them for branch metric calculation). Software implementation One of the most time-consuming operations is an ACS butterfly, which is usually implemented using an assembly language and appropriate instruction set extensions (such as SSE2) to speed up the decoding time. Applications The Viterbi decoding algorithm is widely used in the following areas: Radio communication: digital TV (ATSC, QAM, DVB-T, etc.), radio relay, satellite communications, PSK31 digital mode for amateur radio. Decoding trellis-coded modulation (TCM), the technique used in telephone-line modems to squeeze high spectral efficiency out of 3 kHz-bandwidth analog telephone lines. Computer storage devices such as hard disk drives. Automatic speech recognition References External links Details on Viterbi decoding, as well as a bibliography. Viterbi algorithm explanation with the focus on hardware implementation issues. r=1/6 k=15 coding for the Cassini mission to Saturn. Online Generator of optimized software Viterbi decoders (GPL). GPL Viterbi decoder software for four standard codes. Description of a k=24 Viterbi decoder, believed to be the largest ever in practical use. Generic Viterbi decoder hardware (GPL). Data transmission Error detection and correction High-importance articles