RU2608872C1 - Method of encoding and decoding block code using viterbi algorithm - Google Patents
Method of encoding and decoding block code using viterbi algorithm Download PDFInfo
- Publication number
- RU2608872C1 RU2608872C1 RU2015140593A RU2015140593A RU2608872C1 RU 2608872 C1 RU2608872 C1 RU 2608872C1 RU 2015140593 A RU2015140593 A RU 2015140593A RU 2015140593 A RU2015140593 A RU 2015140593A RU 2608872 C1 RU2608872 C1 RU 2608872C1
- Authority
- RU
- Russia
- Prior art keywords
- code
- symbols
- subblocks
- registers
- decoder
- Prior art date
Links
Images
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
-
- 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/4107—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
-
- 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
- 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
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
Изобретение относится к области вычислительной техники, а именно к способам и устройствам, входящим в состав аппаратуры и программного обеспечения для систем коррекции ошибок при передаче, хранении, чтении и восстановлении цифровых данных. Оно может быть использовано для кодирования информации с использованием модифицированного алгоритма Витерби.The invention relates to the field of computer technology, and in particular to methods and devices that are part of the hardware and software for error correction systems for the transmission, storage, reading and restoration of digital data. It can be used to encode information using a modified Viterbi algorithm.
Кодирование и декодирование информации и используемые для этих целей кодеры и декодеры цифровых потоков информации широко используются для того, чтобы исправлять ошибки при передаче и хранении цифровых данных. Техническая и экономическая польза применения систем кодирования состоит в том, что кодирование многократно повышает кпд используемых каналов, что особенно важно для чрезвычайно дорогих спутниковых и космических каналов связи.The encoding and decoding of information and the encoders and decoders of digital information streams used for these purposes are widely used in order to correct errors in the transmission and storage of digital data. The technical and economic benefits of using coding systems is that coding greatly increases the efficiency of the channels used, which is especially important for extremely expensive satellite and space communication channels.
Известен способ кодирования [RU 2551207, C2, H04N 19/105, 20.05.2015], который содержит этапы, на которых кодируют блок В пикселей с использованием опорного режима и одного или более опорных изображений и тем самым предоставляют закодированный блок Ве, получают одиночный синтаксический элемент, идентифицирующий опорный режим и одно или более опорных изображений, причем одиночный синтаксический элемент представляет запись в первом предопределенном опорном списке, и причем первый список содержит одну или более записей, идентифицирующих, по меньшей мере, одно из множества опорных изображений и одиночного опорного изображения, предоставляют одиночный синтаксический элемент декодеру блока Ве, а особенностью способа является то, что синтаксический элемент получается посредством того, что используемый опорный режим и одно или более опорных изображений отображают на синтаксический элемент в соответствии с предопределенной схемой отображения, каждая запись в первом списке дополнительно идентифицирует опорный режим, одиночный синтаксический элемент дополнительно представляет опорный режим и запись во втором предопределенном опорном списке.A known encoding method [RU 2551207, C2, H04N 19/105, 05/20/2015], which comprises the steps of encoding the pixel block B using the reference mode and one or more reference images and thereby providing the encoded block Be , receive a single a syntax element identifying the reference mode and one or more reference images, wherein a single syntax element represents an entry in a first predetermined reference list, and wherein the first list contains one or more entries identifying at least one of the plurality of reference images and the single reference image, provide a single syntax element block decoder in the e, a feature of the process is that the syntax element obtained by the fact that the used reference mode and one or more reference images are displayed on a syntax element according to a predetermined by the display circuit, each entry in the first list further identifies a reference mode, a single syntax element further represents a reference Mode and recording the second predetermined reference list.
Недостатком этого технического решения является относительно узкая область применения, поскольку способ предназначен преимущественно для кодирования изображений.The disadvantage of this technical solution is the relatively narrow scope, since the method is intended primarily for encoding images.
Наиболее близким по технической сущности к предложенному является способ кодирования и последующего декодирования информации по алгоритму Витерби.The closest in technical essence to the proposed is a method of encoding and subsequent decoding of information according to the Viterbi algorithm.
Алгоритм Витерби (АВ) предназначен для исправления ошибок в цифровых сообщениях при их передаче сверточными кодами по шумящим каналам. Они являются оптимальными, наилучшими по вероятности ошибки декодирования, но характеризуются экспоненциальным ростом сложности декодирования с увеличением длины используемых кодов.Viterbi Algorithm (AB) is designed to correct errors in digital messages when they are transmitted by convolutional codes over noisy channels. They are optimal, the best in probability of decoding errors, but are characterized by an exponential increase in the complexity of decoding with an increase in the length of the codes used.
Способ кодирования и декодирования по алгоритму АВ [В.В. Золотарёв, Г.В. Овечкин. Помехоустойчивое кодирование. Методы и алгоритмы. Справочник. М., "Горячая линия - телеком", 2004, 124 с., с. 23] заключается в следующем.A method of encoding and decoding according to the AB algorithm [V.V. Zolotarev, G.V. Ovechkin. Robust coding. Methods and Algorithms. Directory. M., "Hotline - Telecom", 2004, 124 pp., P. 23] is as follows.
Для длины кода K в случае, например, использования кода с кодовой скоростью R=1/2, на каждом такте работы кодера, представляющего собой двоичный регистр сдвига длиной K битов, вводят очередной информационный символ, а в канал отправляют n0=2 кодовых символа, образующие кодовый подблок, которые являются суммами по mod2 заданных информационных символов сдвигового регистра, конкретные позиции которых определяют используемый сверточный код, а на приемном конце линии связи одновременно запоминают для такого кода 2K-1 возможных информационных сообщений и в процессе передачи выбранным кодом запоминают пути длиной 5*K или более.For the code length K, in the case of, for example, using a code with a code rate of R = 1/2, at each clock cycle of the encoder, which is a binary shift register with a length of K bits, the next information symbol is entered, and n 0 = 2 code symbols are sent to the channel forming the coded subblock which are the sums of predetermined information symbols mod2 shift register specific positions which define the convolutional code used, and on the receiving end of the link is stored at a time for such a
Декодер АВ работает следующим образом. Сначала в массиве памяти, в которой накапливают величины веса разностей (отличий) запоминаемых путей от принятых сообщений, нулевая последовательность получает вес 0, а все остальные 2K-1-1 путей получают большой вес, например 1000, что позволяет правильно хранить нужные пути. Далее, при каждом поступлении каждого кодового подблока (в нашем примере - размером n0=2 битов) декодер вычисляет для каждого пути, который он хранит, 2 варианта возможных продолжений пути (0 или 1) и вычисляет для каждого из них приращение веса разностей путей и принятого подблока, а затем новые 2 варианта приращений путей и их новые полные веса с учетом обоих вариантов их приращений. Полученные 2К путей группируются на пары, в которых все информационные символы, кроме находящихся на расстоянии K от позиции обрабатываемого в данный момент подблока, совпадают. В каждой паре таких путей, отличающихся в K-ом бите, выбирается тот из них, который имеет меньший вес разности с принятым сообщением, после чего количество выживших путей становится снова равным 2K-1. Когда длины запоминаемых путей достигают порядка ~5*K, крайний бит того пути, который имеет минимальный вес, считается декодированным и передается получателю, и больше длина запоминаемых путей не растет. Затем принимают следующий подблок и процесс декодирования продолжается.Decoder AB operates as follows. First, in the memory array, in which the values of the weight of the differences (differences) of the stored paths from the received messages are accumulated, the zero sequence gets the weight 0, and all the other 2 K-1 -1 paths get a lot of weight, for example 1000, which allows you to correctly store the desired paths. Further, at each arrival of each code sub block (in our example, the size is n 0 = 2 bits), the decoder calculates for each path it stores, 2 options for possible path extensions (0 or 1) and calculates for each of them an increment of the weight of the path differences and the accepted sub-block, and then the new 2 options for increments of the paths and their new full weights, taking into account both options of their increments. Received 2 K paths are grouped into pairs in which all information symbols, except those located at a distance K from the position of the currently processed sub-block, coincide. In each pair of such paths that differ in the Kth bit, one of them is selected that has a smaller difference weight with the received message, after which the number of surviving paths becomes again equal to 2 K-1 . When the lengths of memorized paths reach the order of ~ 5 * K, the last bit of the path that has the minimum weight is considered decoded and transmitted to the recipient, and the length of the memorized paths does not increase anymore. Then, the next sub-block is received and the decoding process continues.
Процесс может быть прерван в любой момент. Тогда последние примерно ~5*K информационных символов не будут декодированы или будут переданы получателю с ошибками. Во втором варианте после завершения передаваемого сообщения в кодер вводятся еще K-1 нулей, что потребует приема еще такого же дополнительного числа кодовых подблоков. Это сохранит высокую достоверность декодирования всего сообщения.The process can be interrupted at any time. Then the last approximately ~ 5 * K information symbols will not be decoded or will be transmitted to the recipient with errors. In the second embodiment, after the end of the transmitted message, another K-1 zeros are entered into the encoder, which will require the reception of the same additional number of code subblocks. This will preserve the high decoding accuracy of the entire message.
Сообщение, передаваемое сверточным кодом, которое декодируется, в частности, с помощью АВ, может быть бесконечным. В этом случае декодер, работающий по методу АВ, может прервать работу в некоторый момент, оставив часть информационных символов сообщения недекодированными, т.к. относящиеся к ним кодовые символы не успели еще к этому моменту поступить в декодер АВ. Но, если сообщение, закодированное сверточным кодом, имеет конечную длину, то для правильного декодирования всего такого сообщения нужно в конце процесса кодирования ввести в кодер передатчика еще K-k0 нулевых символов, что приведет к передаче и дополнительных кодовых символов, которые только и позволят сохранить ту помехоустойчивость всех информационных символов переданного сообщения, которая может быть обеспечена применяемым сверточным кодом.The message transmitted by the convolutional code, which is decoded, in particular, using AB, can be infinite. In this case, the AB-based decoder may interrupt operation at some point, leaving some of the information symbols of the message undecoded, because the related code symbols had not yet arrived at the AB decoder by this time. But, if the message encoded by the convolutional code has a finite length, then for the correct decoding of all such a message, it is necessary to add Kk 0 zero characters to the transmitter encoder at the end of the encoding process, which will lead to the transmission of additional code characters that will only allow saving noise immunity of all information symbols of the transmitted message, which can be provided by the applicable convolutional code.
Однако очень существенно и при создании технических средств очень неудобно, что дополнительные символы в конце сообщения конечной длины меняют кодовую скорость исходного сверточного кода. Например, при длине исходного сообщения, равного 100 битам, для кода с R=1/2 в канал должны уходить не 200 двоичных кодовых символов, а еще (K-1)*2 символов, где K - количество ячеек кодирующего регистра. Поэтому, например, в частном случае при K=3 в канал дополнительно уходят 4 кодовых символа. Это значит, что реальная кодовая скорость равна не R=1/2, что было бы крайне удобно при формировании управляющих воздействий (тактовых импульсов) для аппаратуры, использующей декодеры Витерби, a R=100/204=0,490196…, что неоправданно усложняет разработку систем с аппаратурой кодирования.However, it is very essential and when creating technical means it is very inconvenient that additional characters at the end of a message of finite length change the code rate of the original convolutional code. For example, if the length of the initial message is 100 bits, for a code with R = 1/2, not 200 binary code symbols should go to the channel, but also (K-1) * 2 characters, where K is the number of cells of the encoding register. Therefore, for example, in the particular case of K = 3, 4 code symbols additionally go into the channel. This means that the real code rate is not R = 1/2, which would be extremely convenient when generating control actions (clock pulses) for equipment using Viterbi decoders, and R = 100/204 = 0.490196 ..., which unreasonably complicates development of systems with coding equipment.
Именно поэтому возникает задача, которая решается в предложенном изобретении, разработки такого способа кодирования и последующего декодирования сообщений при помехоустойчивом кодировании, когда обеспечивается работа декодеров при той же кодовой скорости R, что и у сверточного кода, выражаемой отношением небольших целых чисел, т.е. нужны блоковые коды с хорошим декодированием, имеющие те же удобные простые значения кодовых скоростей, что и у сверточных, например R=1/2, R=1/3, R=3/4 и т.д. Это существенно упростило бы применение кодирования с использованием АВ для конечных по длине сообщений, т.е. для блоковых кодов.That is why the problem arises that is solved in the proposed invention, the development of such a method of encoding and subsequent decoding of messages in error-correcting coding, when the decoders are operated at the same code rate R as the convolution code expressed by the ratio of small integers, i.e. we need block codes with good decoding that have the same convenient simple code rate values as convolutional ones, for example, R = 1/2, R = 1/3, R = 3/4, etc. This would greatly simplify the use of AB coding for messages that are finite in length, i.e. for block codes.
Таким образом, задача, которая решается в предложенном изобретении, заключается в расширении области применения способа кодирования и декодирования сообщений с целью обеспечения возможности использования способа в системах кодирования блоковых кодов с согласованными (равными или кратными целому числу) скоростями кодирования и декодирования.Thus, the problem that is solved in the proposed invention is to expand the scope of the method for encoding and decoding messages in order to enable the method to be used in coding systems for block codes with matched (equal to or a multiple of an integer) coding and decoding rates.
Технический результат, который реализуется при использовании способа, заключается в расширении области применения для обеспечения возможности использования способа в системах с согласованными скоростями кодирования и декодирования в блоковых кодах, для которых строить оптимальные декодеры гораздо сложнее, чем для сверточных.The technical result that is realized when using the method is to expand the scope to provide the possibility of using the method in systems with agreed coding and decoding rates in block codes, for which it is much more difficult to build optimal decoders than for convolutional ones.
Эта задача решается с учетом и использованием важного свойства АВ, которое состоит в том, что в бесконечном сверточном коде (длиной тысячи и миллионы символов) АВ всегда может начинать работу в произвольном месте с приема любого кодового подблока длины n0, а не только с самого начала передачи очередного такого длинного сообщения. Работая далее в обычном режиме, начиная с некоторого места передаваемой сколь угодно длинной кодовой последовательности после приема из канала примерно 5K÷30K кодовых подблоков, АВ выходит на правильное решение и далее успешно декодирует и остальную часть принимаемой последовательности. Точное число блоков, после приема которых АВ выходит на правильный (с минимальной вероятностью ошибки) путь, зависит от выбора конкретного кода и от уровня шума в канале.This problem is solved taking into account and using the important property of AB, which consists in the fact that in an infinite convolutional code (thousands and millions of characters in length), AB can always start work in an arbitrary place by receiving any code sub-block of length n 0 , and not just from start sending another such long message. Working further in the usual mode, starting from some place of the transmitted arbitrarily long code sequence after receiving from the channel approximately 5K ÷ 30K code subblocks, AB comes to the correct decision and then successfully decodes the rest of the received sequence. The exact number of blocks, after receiving which the AV goes to the correct (with a minimum error probability) path, depends on the choice of a specific code and on the noise level in the channel.
Поставленная задача решается, а требуемый технический результат достигается тем, что в способе кодирования и последующего декодирования сообщений, включающего подачу исходного сообщения в кодер с кодовой скоростью R=k0/n0, содержащий k0 регистров сдвига длиной K битов каждый, содержимое ячеек которых в соответствии с используемым кодом подают на входы n0 сумматоров по mod2, с выходов которых кодовые символы подблоками по n0 символов направляют в канал передачи данных, из которого их подают подблоками по n0 символов на вход декодера, работающего по алгоритму Витерби, содержащего 2(K-1)*k0 ячеек памяти для хранения весов разности путей и принятого сообщения, 2(K-1)*k0 регистров сдвига для хранения выживших путей, 2K*k0 вычислителей дополнительных весов разности путей, 2K*k0 вычислителей полных новых разностей путей и 2k0 устройств сравнения весов путей и выбора пути с наименьшим весом, согласно изобретению кодируемые информационные последовательности разбивают на блоки, которые дополнительно разбиваю на k0 меньших блоков, которые помещают в k0 регистров кодера для такого же кода, но с увеличенной длиной регистров до величины K+U, U≥K, причем все k0 регистров после ввода в них информационных символов свертывают циклически соединением выходов последних ячеек каждого их этих регистров с их входами, после чего выполняют K+U синхронных сдвигов всех получившихся циклических регистров, во время которых формируют K+U кодовых подблоков по n0 кодовых символов, которые направляют в канал, а затем подают подблоками по n0 кодовых символов на вход декодера Витерби, причем после приема декодером всех K+U кодовых подблоков размера n0 в декодер подают вновь эти же кодовые подблоки в том же порядке еще не менее двух раз, после чего процесс декодирования прерывается и на выжившем пути минимального веса выбираются (K+U)*k0 символов решений декодера Витерби, которые находятся на расстоянии не менее 5*K*k0 символов от места приема последнего кодового подблока размера n0.The problem is solved, and the required technical result is achieved by the fact that in the method of encoding and subsequent decoding of messages, comprising supplying the original message to the encoder with a code rate of R = k 0 / n 0 , containing k 0 shift registers of length K bits each, the contents of the cells of which according to the code used is fed to the inputs of adders n 0 mod2, from the outputs of which code symbols subblocks 0 for n symbols sent in the data channel, from which they are fed subblocks 0 for n symbols on decoder input exercising th Viterbi containing 2 (K-1) * k0 memory cells for storing path difference weights and received message, 2 (K-1) * k0 shift registers for storing survivor paths 2 K * k0 calculators additional path difference weights, According to the invention, 2 K * k0 calculators of complete new path differences and 2 k0 devices for comparing path weights and choosing the path with the smallest weight are divided into blocks, which are further divided into k 0 smaller blocks that are placed in k 0 encoder registers for such same code but with uv lichenie length registers to a value of K + U, U≥K, wherein k 0 all registers after entering therein information symbols roll cyclic compound outputs the last cell of each of these registers to their inputs, and then operate K + U synchronous shift registers of all of the resulting cyclic during which K + U code blocks of n 0 code symbols are generated, which are sent to the channel, and then subblocks of n 0 code symbols are input to the Viterbi decoder, and after the decoder receives all K + U code subblocks of size n 0 into the decoder supply the same code subblocks again in the same order at least two more times, after which the decoding process is interrupted and (K + U) * k 0 symbols of Viterbi decoder solutions that are at least 5 * K are selected on the surviving path of minimum weight * k 0 characters from the place of reception of the last code block of size n 0 .
Предложенный способ иллюстрируется примером его реализации. На чертеже представлено устройство кодирования информации, которое преобразует сверточное кодирование в блоковое с той же кодовой скоростью. Такое преобразование позволяет на приемном конце линии связи применить для декодирования различные методы, в том числе и АВ.The proposed method is illustrated by an example of its implementation. The drawing shows a device for encoding information, which converts convolutional coding into block coding with the same code rate. Such a conversion makes it possible to use various methods for decoding at the receiving end of the communication line, including AV.
Устройство кодирования информации содержит двоичный регистр сдвига длины K, к выходу которого присоединен вход двоичного сдвигового регистра длины U, а выход этого регистра соединен со входом двоичного регистра сдвига длины K. В результате, формируется циклический регистр 1 сдвига длины K+U, обеспечивающий циклический сдвиг записанных в него данных. Содержимое ячеек в соответствии с используемым кодом подают на входы n0 сумматоров 2 по mod2, выполненных с возможностью передачи формируемых ими n0 кодовых символов в канал передачи данных.The information encoding device contains a binary shift register of length K, the output of which is connected to the input of a binary shift register of length U, and the output of this register is connected to the input of a binary shift register of length K. As a result, a
Это устройство кодирования (кодер) информации блоковым квазициклическим кодом работает следующим образом.This encoding device (encoder) information block quasi-cyclic code operates as follows.
В кодер во все K+U двоичных ячеек записывают информационные символы, предназначенные для помехоустойчивого кодирования и последующей передачи по шумящему каналу связи.Information symbols intended for error-correcting coding and subsequent transmission over a noisy communication channel are recorded in the encoder in all K + U binary cells.
Затем производится главная процедура подготовки к передаче сообщения: кодирование блока из K+U информационных символов для формирования кодового блока, предназначенного для передачи по каналу связи с высоким уровнем шума. Для этого с выхода n0 полусумматоров 2 кодера их содержимое отправляется в канал связи, затем содержимое всего регистра 1 длины K+U сдвигается циклически на k0 позиций, после чего снова с выхода n0 полусумматоров 2 кодера содержимое отправляется в канал и т.д. Этот процесс формирования блокового кода с R=k0/n0 заканчивается, когда после (K+U)/k0 циклических сдвигов регистр 1 сдвига кодера оказывается в исходном состоянии, кодирование блоковым кодом считается законченным и все сформированное кодовое слово блокового кода оказывается отправленным в канал связи. После этого можно приступить к кодированию этим блоковым кодом с R=k0/n0 уже следующего двоичного информационного блока длины K+U и т.д.Then, the main procedure for preparing for the transmission of the message is performed: coding a block of K + U information symbols to form a code block intended for transmission over a communication channel with a high noise level. To do this, from the output of n 0 half-
Подчеркнем, что такое преобразование сверточного кода в блоковый квазициклический код хорошо известно и давно используется техникой кодирования.We emphasize that such a conversion of a convolutional code into a block quasicyclic code is well known and has long been used in coding techniques.
Особенностью предложенного способа является то, что длина K левой части регистра кодера и длина U его дополнительного правого сдвигового регистра относятся как U/K~2÷30. При меньшем соотношении возникают сложности достижения малых вероятностей ошибки при декодировании, а при большем соотношении излишне увеличивается длина кода и сложность устройства кодирования, а также размеры и сложность декодера, который рассматривается далее.A feature of the proposed method is that the length K of the left side of the encoder register and the length U of its additional right shift register are U / K ~ 2 ÷ 30. With a lower ratio, difficulties arise in achieving low decoding error probabilities, and with a larger ratio, the code length and complexity of the encoding device, as well as the size and complexity of the decoder, which will be discussed later, increase unnecessarily.
Опишем теперь работу системы декодирования предлагаемого изобретения.We now describe the operation of the decoding system of the invention.
На приемном конце системы связи декодер, реализующий алгоритм Витерби, сразу начинает работать также, как и при обычном декодировании исходного длинного сверточного кода с произвольного места. Он принимает n0 кодовых символов и обрабатывает их в соответствии с правилами алгоритма декодирования и затем принимает следующий такой же блок и т.д. Поскольку по каналу передаются символы двоичного блокового квазициклического кода, более длинного, чем исходный сверточный код, но все же короткого, длиной в десятки или сотни символов, то после приема и обработки последнего кодового подблока этого блокового кода размером покодовых символов в декодер снова подаются циклически первый подблок из уже принятых n0 кодовых символов этого кода, затем второй и т.д. В зависимости от длины кода и уровня шума в декодер АВ можно циклически подать снова 2÷5 или более раз все кодовые символы принятого кодового блока, что зависит от кода и уровня шума канала. Но поскольку у квазициклического кода нет "начала", то алгоритм декодирования, как и в случае бесконечного сверточного кода, будет выходить на правильное решение только после прихода в декодер D~(3÷20)K кодовых подблоков. При этом для правильной реализации декодирования используемого блокового кода нужно в дополнение к этому учесть далее, что в декодер несколько раз поступают одни и те же повторяющиеся последовательности кодовых символов, частично искаженных в канале связи. Но тогда после приема указанных D=(3÷20)K кодовых подблоков, когда, в частности, алгоритм Витерби уже обеспечивает достаточно достоверные решения относительно декодируемого кодового потока, решения декодера обязательно повторяются также с периодом K+U. Поэтому, учитывая тот факт, что декодируется не бесконечное сообщение, а блок с K+U двоичными информационными символами, получателю информации (приемнику) нужно передать только двоичный информационный блок длины K+U, но за пределами первых принятых декодером D кодовых подблоков, где, как указывалось выше, эти решения в основном неправильны. С другой стороны, для алгоритма Витерби также хорошо известно, что другое условие достаточной достоверности решений состоит в том, что такие правильные, в основном, решения декодера формируются не ранее чем после приема L=(5÷25)K кодовых подблоков. Таким образом, декодер должен принять ~L+D+K+U кодовых подблоков и затем передать приемнику K+U двоичных информационных символов, находящихся приблизительно в середине этой последовательности решений декодера, т.к. решения, находящиеся близко к месту приема очередного кодового подблока и близко к месту приема самых первых кодовых подблоков, малодостоверны по сравнению с потенциальными возможностями применяемого кода.At the receiving end of the communication system, a decoder that implements the Viterbi algorithm immediately begins to work just as with conventional decoding of the initial long convolutional code from an arbitrary place. It takes n 0 code symbols and processes them in accordance with the rules of the decoding algorithm and then takes the next same block, etc. Since the symbols of a binary block quasicyclic code longer than the original convolutional code, but still short, tens or hundreds of characters long, are transmitted over the channel, after receiving and processing the last code subblock of this block code the size of the code symbols, the first a sub-block of n 0 code symbols of this code already accepted, then the second, etc. Depending on the code length and noise level, all code symbols of the received code block can be cyclically fed back to the decoder AB again 2-5 or more times, which depends on the code and the noise level of the channel. But since the quasicyclic code does not have a “beginning”, the decoding algorithm, as in the case of an infinite convolutional code, will come to the correct solution only after the code subblocks arrive in the decoder D ~ (3 ÷ 20) K. Moreover, for the correct implementation of decoding of the used block code, it is necessary to take into account further that the same repeated sequences of code symbols partially distorted in the communication channel are received several times in the decoder. But then, after receiving the indicated D = (3 ÷ 20) K code subblocks, when, in particular, the Viterbi algorithm already provides sufficiently reliable solutions for the decoded code stream, the decoder decisions are also repeated with the period K + U. Therefore, given the fact that not an infinite message is decoded, but a block with K + U binary information symbols, the recipient of the information (receiver) needs to transmit only a binary information block of length K + U, but outside the first code subblocks received by decoder D, where, as stated above, these decisions are mostly incorrect. On the other hand, it is also well known for the Viterbi algorithm that another condition for sufficient reliability of solutions is that such correct, basically, decoder decisions are formed no earlier than after receiving L = (5 ÷ 25) K code subblocks. Thus, the decoder should receive ~ L + D + K + U code subblocks and then transmit to the receiver K + U binary information symbols located approximately in the middle of this decoder decision sequence, since decisions that are close to the place of reception of the next code subunit and close to the place of reception of the very first code subunits are unreliable in comparison with the potential capabilities of the applied code.
Таким образом, благодаря усовершенствованию известного способа декодирования на основе АВ для сверточных кодов достигается требуемый технический результат, заключающийся в расширении области применения этого способа, поскольку он теперь обеспечивает декодирование и блокового квазициклического кода, у которого точно такое же значение кодовой скорости R, как и у исходного сверточного, причем корректирующая способность блокового кода остается примерно такой же, как и у сверточного кода, если увеличение длины блокового кода по сравнению со сверточным оказывается достаточно существенным, в несколько раз.Thus, by improving the known AV-based decoding method for convolutional codes, the required technical result is achieved by expanding the scope of this method, since it now provides decoding of a block quasi-cyclic code, which has exactly the same code rate value R as initial convolutional, and the correcting ability of the block code remains approximately the same as that of the convolutional code, if the increase in the length of the block code compared with convolution is quite significant, several times.
Предварительное полное моделирование работы предлагаемой системы кодирования и последующего декодирования действительно показало для широкого диапазона значений длин исходного кода K=3-20 при кодовой скорости R=1/2 успешное оптимальное декодирование блокового кода, которое для различных уровней шума оказывается лишь в 1,3-3 раза по вероятности ошибки менее эффективным, чем при использовании сверточного кодирования с тем же кодом. Это полностью соответствует известному преимуществу сверточных кодов над блоковыми. При этом в сверточном коде сохранилось то же значение кодовой скорости R=1/2, которой соответствовал исходный сверточный код.Preliminary full modeling of the operation of the proposed coding system and subsequent decoding really showed for a wide range of source code lengths K = 3-20 at a code rate of R = 1/2, successful optimal decoding of the block code, which for various noise levels is only 1.3- 3 times the probability of error is less effective than using convolutional coding with the same code. This fully corresponds to the well-known advantage of convolutional codes over block codes. In this case, the convolutional code retained the same value of the code rate R = 1/2, which corresponded to the original convolutional code.
Claims (1)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015140593A RU2608872C1 (en) | 2015-09-24 | 2015-09-24 | Method of encoding and decoding block code using viterbi algorithm |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015140593A RU2608872C1 (en) | 2015-09-24 | 2015-09-24 | Method of encoding and decoding block code using viterbi algorithm |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2608872C1 true RU2608872C1 (en) | 2017-01-25 |
Family
ID=58456950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015140593A RU2608872C1 (en) | 2015-09-24 | 2015-09-24 | Method of encoding and decoding block code using viterbi algorithm |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2608872C1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2681704C1 (en) * | 2018-04-09 | 2019-03-12 | Публичное акционерное общество "Ракетно-космическая корпорация "Энергия" имени С.П. Королёва" | Block code encoding and decoding method |
RU2747881C1 (en) * | 2020-10-21 | 2021-05-17 | Валерий Владимирович Золотарев | Method for decoding long block code using viterbi algorithm |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802115A (en) * | 1995-08-31 | 1998-09-01 | Sgs-Thomson Microelectronics S.A. | Convolution decoder using the Viterbi algorithm |
US6452985B1 (en) * | 1998-03-18 | 2002-09-17 | Sony Corporation | Viterbi decoding apparatus and Viterbi decoding method |
RU2246751C2 (en) * | 1999-10-21 | 2005-02-20 | Квэлкомм Инкорпорейтед | High-speed module for adding/comparing/selecting for use with witterby decoder |
RU2363098C1 (en) * | 2005-05-18 | 2009-07-27 | Самсунг Электроникс Ко., Лтд. | Viterbi decoding architecture for use in program controlled radio systems |
US20130266096A1 (en) * | 2012-04-05 | 2013-10-10 | Freescale Semiconductor, Inc. | Viterbi decoder for decoding convolutionally encoded data stream |
-
2015
- 2015-09-24 RU RU2015140593A patent/RU2608872C1/en active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802115A (en) * | 1995-08-31 | 1998-09-01 | Sgs-Thomson Microelectronics S.A. | Convolution decoder using the Viterbi algorithm |
US6452985B1 (en) * | 1998-03-18 | 2002-09-17 | Sony Corporation | Viterbi decoding apparatus and Viterbi decoding method |
RU2246751C2 (en) * | 1999-10-21 | 2005-02-20 | Квэлкомм Инкорпорейтед | High-speed module for adding/comparing/selecting for use with witterby decoder |
RU2363098C1 (en) * | 2005-05-18 | 2009-07-27 | Самсунг Электроникс Ко., Лтд. | Viterbi decoding architecture for use in program controlled radio systems |
US20130266096A1 (en) * | 2012-04-05 | 2013-10-10 | Freescale Semiconductor, Inc. | Viterbi decoder for decoding convolutionally encoded data stream |
Non-Patent Citations (1)
Title |
---|
ЗОЛОТАРЕВ В.В. и др. ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ. МЕТОДЫ И АЛГОРИТМЫ: СПРАВОЧНИК, Москва, Горячая линия - Телеком, 2004, с. 23, 65-69. * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2681704C1 (en) * | 2018-04-09 | 2019-03-12 | Публичное акционерное общество "Ракетно-космическая корпорация "Энергия" имени С.П. Королёва" | Block code encoding and decoding method |
RU2747881C1 (en) * | 2020-10-21 | 2021-05-17 | Валерий Владимирович Золотарев | Method for decoding long block code using viterbi algorithm |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4847842A (en) | SM codec method and apparatus | |
US7246294B2 (en) | Method for iterative hard-decision forward error correction decoding | |
US4805174A (en) | Error correcting coder/decoder | |
US10992416B2 (en) | Forward error correction with compression coding | |
US11652498B2 (en) | Iterative bit flip decoding based on symbol reliabilities | |
CN110071727B (en) | Encoding method, decoding method, error correction method and device | |
CN1301117A (en) | 'Not or' codes and serial connected encoder/decoder therewith | |
US7231575B2 (en) | Apparatus for iterative hard-decision forward error correction decoding | |
RU2608872C1 (en) | Method of encoding and decoding block code using viterbi algorithm | |
KR20040044589A (en) | A Soft-Input Decoding Method of Reed-Muller Codes Using Majority Logic and Apparatus thereof | |
US7035356B1 (en) | Efficient method for traceback decoding of trellis (Viterbi) codes | |
RU2667370C1 (en) | Method for decoding linear cascade code | |
FI113114B (en) | A method for encoding and decoding a digital message | |
RU2428801C1 (en) | Device of code cycle synchronisation with soft decisions | |
RU2005126242A (en) | METHOD FOR VOICE DATA TRANSFER IN A DIGITAL RADIO COMMUNICATION SYSTEM AND A DEVICE FOR ITS IMPLEMENTATION | |
RU2812964C1 (en) | Method of stable code cyclic synchronization when applying hard and soft solutions and modulation according to s1-fl joint type | |
RU2747881C1 (en) | Method for decoding long block code using viterbi algorithm | |
RU2797444C1 (en) | Method for stable code framing with hard and soft decisions | |
KR0144837B1 (en) | Decoding method and apparatus of optimum decoding path | |
Vijay et al. | Comparison between Viterbi algorithm soft and hard decision decoding | |
RU2759801C1 (en) | Method for code frame synchronization for cascade code when applying strict solutions | |
CA3072857C (en) | Forward error correction with compression coding | |
Wang et al. | Designing efficient codes for synchronization error channels | |
US8503585B2 (en) | Decoding method and associated apparatus | |
KR0141199B1 (en) | Digital communications system using conventional codes |