RU2608872C1 - Method of encoding and decoding block code using viterbi algorithm - Google Patents

Method of encoding and decoding block code using viterbi algorithm Download PDF

Info

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
Application number
RU2015140593A
Other languages
Russian (ru)
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 RU2015140593A priority Critical patent/RU2608872C1/en
Application granted granted Critical
Publication of RU2608872C1 publication Critical patent/RU2608872C1/en

Links

Images

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/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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • 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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence 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
    • 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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • 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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • H03M13/4169Sequence 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

FIELD: computer engineering.
SUBSTANCE: invention relates to computer engineering and can be used for correction of errors during transmission, storage, reading and recovery of digital data. Method comprises feeding an initial message with code rate R=k0/n0 to a coder containing k0 shift registers with the length of K bits each, the cells content of which in accordance with the used code is transmitted to inputs of n0 adders via mod2, from the outputs of which code symbols in subblocks of n0 symbols each are sent into a data transmission channel, from which they are fed in subblocks of n0 symbols each to the input of a decoder operating as per Viterbi algorithm, herewith the encoded data sequences are divided into blocks, which are additionally divided into k0 smaller blocks, which are placed in k0 coder registers for the same code, but with an increased length of registers up to value K+U, U≥K, herewith all k0 registers after the input of information symbols are rolled in cyclically by connecting outputs of the last cells of each of those registers with their inputs, then performed are K+U synchronous shifts of all obtained cyclic registers, during which formed are K+U code subblocks of n0 code symbols each, which are directed into the channel, and then are fed in subblocks of n0 code symbols each to the Viterbi decoder input.
EFFECT: technical result is the possibility of using in encoding systems block codes with matched speeds of encoding and decoding.
1 cl, 1 dwg

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 code 2 K-1 possible information messages Nij and during selected transmission code stored path length of 5 * K or more.

Декодер АВ работает следующим образом. Сначала в массиве памяти, в которой накапливают величины веса разностей (отличий) запоминаемых путей от принятых сообщений, нулевая последовательность получает вес 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 cyclic shift register 1 of length K + U is formed, providing a cyclic shift data recorded in it. The contents of the cells in accordance with the code used are fed to the inputs n 0 of adders 2 by mod2, configured to transmit n 0 code symbols formed by them into a data transmission channel.

Это устройство кодирования (кодер) информации блоковым квазициклическим кодом работает следующим образом.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-adders 2 of the encoder, their contents are sent to the communication channel, then the contents of the entire register 1 of length K + U are cyclically shifted by k 0 positions, after which again from the output of n 0 half-adders of 2 encoders, the contents are sent to the channel, etc. . This process of generating a block code with R = k 0 / n 0 ends when, after (K + U) / k 0 cyclic shifts, the encoder shift register 1 is in the initial state, the coding by the block code is considered complete, and all the generated code word of the block code is sent to the communication channel. After that, we can start coding with this block code with R = k 0 / n 0 the next binary information block of length K + U, etc.

Подчеркнем, что такое преобразование сверточного кода в блоковый квазициклический код хорошо известно и давно используется техникой кодирования.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)

Способ кодирования и декодирования блокового кода с использованием алгоритма Витерби, включающий подачу исходного сообщения с кодовой скоростью 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.A method of encoding and decoding a block code using the Viterbi algorithm, comprising supplying an initial message with a code rate of R = k 0 / n 0 to an encoder containing k 0 shift registers with a length of K bits each, the contents of the cells of which are supplied to the inputs n in accordance with the code used 0 adders according to mod2, from the outputs of which code symbols in subblocks of n 0 symbols each are sent to a data channel from which they are fed in subblocks of n 0 symbols each to the input of a Viterbi-based decoder containing 2 (K-1) * k0 memory cells for xp neniya weights path difference and a received message, 2 (K-1) * k0 shift registers for storing survivor paths 2 K * k0 calculators additional path difference weights 2 K * k0 calculators complete new path difference and 2 k0 comparison weights tract devices and choosing the path with the smallest weight, characterized in that the encoded information sequences are divided into blocks, which are further divided into k 0 smaller blocks, which are placed in k 0 registers of the encoder for the same code, but with an increased length of registers up to the value K + U, U ≥K, and all k 0 reg after the input of information symbols in them, it is rolled up cyclically by connecting the outputs of the last cells of each of these registers with their inputs, after which K + U synchronous shifts of all the resulting cyclic registers are performed, during which K + U code subblocks of n 0 code symbols are formed, which they are sent to the channel, and then subblocks of n 0 code symbols are input to the Viterbi decoder input, and after the decoder has received all K + U code subblocks of size n 0, the same code subblocks are again sent to the decoder in the same order as before two times, after which the decoding process is interrupted and (K + U) * k 0 characters of Viterbi decoder decisions that are at least 5 * K * k 0 characters from the last code subblock of size n are selected on the surviving path of minimum weight 0 .
RU2015140593A 2015-09-24 2015-09-24 Method of encoding and decoding block code using viterbi algorithm RU2608872C1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
ЗОЛОТАРЕВ В.В. и др. ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ. МЕТОДЫ И АЛГОРИТМЫ: СПРАВОЧНИК, Москва, Горячая линия - Телеком, 2004, с. 23, 65-69. *

Cited By (2)

* Cited by examiner, † Cited by third party
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