Способ диагностики циклических кодов относится к технике связи и может быть использован для определения неизвестной структуры кодера циклических систематических и несистематических кодов на основе анализа принимаемой кодовой последовательности.
Известны различные способы циклического кодирования и декодирования, используемые для исправления возникающих при передаче ошибок и описанные, например, в книгах: Ипатов В.П., Орлов В.К., Самойлов И.М. Системы мобильной связи - М.: Горячая линия-Телеком, 2003; Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. - М.: Техносфера, 2006. В них описываются операции получения кодового блока из входной информационной последовательности символов путем осуществления операций свертки определенного количества информационных символов с полиномиальными генераторами (порождающими полиномами) и последовательной передачи подобных кодовых блоков. После приема последовательность раскодируется одними из возможных методов. Однако для успешного раскодирования любым из методов должны быть известны используемые порождающие полиномы, без чего раскодирование невозможно.
Наиболее близким к заявляемому является способ, описанный в кн.: Скляр Б. Цифровая связь. Теоретические основы и практическое применение. - М.: Изд. дом «Вильямс», 2003. При этом для реализации несистематического кода группа последовательно идущих исходных информационных символов умножается по модулю 2 на порождающий полином, представленный в виде вектора с двоичными элементами. Для реализации систематического кода исходная группа информационных символов сдвигается на определенное количество двоичных разрядов. Далее результат сдвига делится на порождающий полином и частное от деления складывается по модулю 2 со сдвинутой группой символов. При декодировании весь принятый кодовый блок делится на порождающий полином, и результат деления используется для локализации и исправления ошибок.
Недостатком описанного способа является необходимость знания на приемной стороне правильного вида используемого порождающего полинома. Если он неизвестен, например утерян или поврежден, то декодирование с исправлением ошибок невозможно и исправляющая способность кода не может быть реализована. Это приводит к снижению помехоустойчивости передачи информации.
Задачей предлагаемого способа диагностики циклических кодов является определение структуры используемого кодера на основе анализа принимаемых кодовых блоков для обеспечения работоспособности декодеров и повышения помехоустойчивости передачи информации.
Поставленная задача решается тем, что в способ диагностики циклических кодов, включающий в себя поразрядный сдвиг полинома и поразрядное сложение по модулю 2, вводят запоминание N кодовых блоков, извлечение пар блоков, запоминание вида полиномов, выбор максимального числа результатов, попарное сравнение и сложение блоков, сравнение полиномов и сравнение результата со сдвинутым полиномом, при этом сначала запоминают N кодовых блоков, затем извлекают пары кодовых блоков, после этого блоки попарно сравнивают и складывают, далее запоминают вид полученных в результате полиномов, после чего выбирают максимальное число полученных результатов, причем при попарном сравнении и сложении блоков сравнивают два выбранных полинома, затем поразрядно сдвигают меньший полином, после чего сравнивают больший полином со сдвинутым меньшим полиномом, в случае их равенства вид меньшего полинома до сдвига запоминается, в случае их неравенства поразрядно складывают по модулю 2 больший полином и сдвинутый меньший полином и возвращаются к сравнению меньшего полинома и полученного результата сложения по модулю 2.
На чертежах представлены: на фиг. 1 - схематическая последовательность операций заявляемого способа; на фиг. 2 - пример структурной схемы устройства для реализации предлагаемого способа.
На фиг. 1 обозначены операции: 1 - запоминание N кодовых блоков; 2 - извлечение пар блоков; 3 - запоминание вида полиномов; 4 - выбор максимального числа результатов; 5 - сравнение полиномов; 6 - поразрядный сдвиг полинома; 7 - сравнение результата со сдвинутым полиномом; 8 - поразрядное сложение по модулю 2; 9 - попарное сравнение и сложение блоков.
На фиг. 2 представлены: первый 10 и второй 11 блоки памяти; первый 12, второй 13, третий 14 и четвертый 15 коммутаторы; первый 16 и второй 17 блоки сравнения; первый 18 и второй 19 определители максимальной степени полинома; первый 20, второй 21, третий 22 и четвертый 23 регистры; вычитатель 24; сумматор 25 по модулю 2; блок выделения максимальной суммы 26; блок управления 27; сдвиговый регистр 28.
Операции предлагаемого способа осуществляются следующим образом. Во время операции 1 производится запоминание N пришедших кодовых блоков. При этом имеется возможность далее извлекать из памяти любые из запомненных кодовых блоков. Далее попарно сравниваются различные два кодовых блока из запомненных. При количестве N блоков возможны всего N(N-1)/2 различных сочетаний пар разных блоков. Эти блоки извлекаются из памяти попарно операцией 2 (последовательность извлечения значения не играет) и далее обрабатываются общей операцией 9 попарного сравнения и сложения блоков.
Операция 9 попарного сложения и сравнения блоков состоит из нескольких операций. Как известно (см., например, вышеуказанную книгу Б. Скляра), каждый кодовый блок представляет собой последовательность двоичных символов и может быть описан в виде некоторого полинома, при этом максимальная степень полинома на единицу меньше количества двоичных разрядов кодового блока.
В операции 5 сравнения полиномов сравниваются два выбранных кодовых блока. При этом сравниваются по величине соответствующие полиномы, т.е. определяется, какой из них больше другого и на сколько разрядов. Сравниваемые два кодовых слова y1 и y2 можно описать в виде полиномов:
y1=anXn+an-1Xn-1+an-2Xn-2+…+а0,
y2=bmXm+bm-1Xm-1+bm-2Xm-2+…+b0,
где n и m - номера максимальных разрядов в первом и втором сравниваемых кодовых словах, содержащих единицу в двоичной записи кодового слова, считая от первого разряда; X обозначает задержку на один такт (на длительность одного символа); коэффициенты а1 и b1 равны нулю или единице в зависимости от двоичного значения соответствующего разряда кодового слова.
Операцией 5 определяется, который из полиномов больше и определяются степени n и m. Пусть больше окажется первый полином y1. В операции 6 сдвига меньшего полинома производится сдвиг полинома y2 вверх на определенное количество разрядов. Количество разрядов, на которое производится сдвиг, равно разности их максимальных степеней, т.е. равно n-m. Получается полином Xn-m y2. Таким образом, если n>m, то такой сдвиг производится, если n=m (хотя при этом полиномы различаются), то они не изменяются.
Если оба сравниваемых полинома до сдвига точно равны между собой, то операция 5 передает их далее к операции 6 без изменений.
В операции 7 вновь производится сравнение полиномов, но уже большего полинома и меньшего сдвинутого вверх полинома. Если эти полиномы становятся точно равны между собой, т.е. одинаковы, то цикл обработки данной пары кодовых блоков прекращается, и на операцию 3 подается меньший полином до его сдвига. Если они остаются не равными один другому, то операцией 8 производится поразрядное сложение по модулю 2 полиномов (фактически, поразрядное сложение по модулю 2 двух двоичных чисел, описывающих эти полиномы). Складывается больший полином и сдвинутый вверх меньший полином. Поскольку наибольшая степень разрядов у этих полиномов теперь одинакова, то результат сложения всегда имеет меньшую степень, чем складываемые полиномы.
После этого обработка возвращается к операции 5, где уже сравниваются другие полиномы. Один из них полином - результат произведенного операцией 8 сложения по модулю 2. Другой сравниваемый полином - меньший полином до его сдвига. Далее вновь повторяются описанные последующие операции. Таким образом, для выбранной пары исходных кодовых блоков в общем случае неоднократно повторяются операции 5-6-7-8. Вид анализируемых полиномов при каждом повторении изменяется. Максимальная степень при каждом повторении или не меняется, но обязательно уменьшаются сами полиномы, или уменьшается и степень максимального полинома. Это происходит до тех пор, пока операция 7 не зафиксирует равенство анализируемых полиномов. После этого полученный вид меньшего полинома до сдвига запоминается операцией 3, и операция 9 в целом переходит к анализу следующей пары кодовых блоков.
После каждого завершения в целом операции 9 (попарное сравнение и сложение блоков) в операции 3 (запоминание вида полиномов) производится запоминание результата операции 9. Если уже ранее при предыдущих выполнениях операции 9 был запомнен такой же результат, относящийся к другой паре сравниваемых кодовых блоков, то новый такой же результат суммируется с предыдущими результатами, относящимися к полиному этого полученного вида. Количество поступивших результатов каждого вида подсчитывается.
Операции 9 попарного сравнения и сложений блоков осуществляется над всеми различающимися N блоками, которые запомнены в операции 1.
Число таких попарных обработок равно N(N-1)/2. Когда все эти попарные обработки завершены, то в результате выполнения операции 3 запомненными оказываются все обнаруженные виды общих полиномов у всех сочетаний полиномов в парах. После завершения всех N(N-1)/2 сравнений операция 4 выбора максимального числа результатов определяет наиболее часто запомненные результаты, т.е. полиномов какого вида больше запомнено. (Если например, каждый факт запоминания, производится в форме прибавления единицы к уже имеющейся сумме в ячейке памяти, относящейся к полиному данного вида, то фактически эта операция определяет, какому полиному, из запомненных процедурой 3, соответствует наибольшая запомненная в памяти сумма.) Этот полином представляет собой двоичное число, определяющее тот порождающий полином, который используется в передатчике для кодирования анализируемого сигнала. Он выводится далее, как конечный результат процедуры диагностики.
Блоки устройства на фиг. 2, как пример реализации предлагаемого способа, работают следующим образом. На первый блок памяти 10 поступают принятые кодовые блоки в форме последовательностей двоичных символов. В нем запоминается N различных кодовых блоков. (Последовательность запомненных блоков значения не имеет, это могут быть либо подряд следующие блоки, либо расположенные другим образом.)
Из этого блока памяти извлекаются пары различных блоков, один из этих блоков подается на вход первого коммутатора 12, другой блок подается на вход второго коммутатора 13. Последовательность извлечения из памяти пар блоков значения не имеет, текущие номера извлекаемых блоков задаются блоком управления 27. В блоке памяти 10 занесено N кодовых блоков, значит, осуществляя N(N-1)/2 циклов, имеется возможность анализировать N(N-1)/2 различных пар блоков. В каждом цикле производится одинаковый набор действий.
Цикл анализа очередной пары кодовых блоков состоит в следующем. В самом начале цикла первый 12 и второй 13 коммутаторы подключают первый и второй многоканальные выходы первого блока памяти 12 на многоканальные параллельные входы, соответственно, первого 20 и второго 21 регистров, где анализируемая в данный момент пара кодовых блоков записывается в форме двоичного кода.
В первом блоке сравнения 16 сравнивается величина кодовых блоков, записанных в первом 20 и втором 21 регистрах. Выходной сигнал этого первого блока сравнения управляет третьим коммутатором 14.
Если двоичные полиномы (кодовые блоки), записанные в регистрах 20 и 21, не равны между собой, то первый блок сравнения 16 с помощью третьего коммутатора 14 подает больший кодовый блок входу первого определителя максимальной степени 18 и к параллельному входу третьего регистра 22, а меньший блок подается коммутатором 14 ко входу второго определителя максимальной степени 19 и к параллельному входу четвертого регистра 23. Поступившие сигналы записываются в эти регистры. Полином, записанный в четвертом регистре 23, также перезаписывается в сдвиговый регистр 28.
Если же окажется, что записанные в регистрах 20 и 21 двоичные полиномы равны между собой, то на оба выхода третьего коммутатора 14 подаются эти одинаковые полиномы.
В определителях максимальной степени 18 и 19 определяются порядки полиномов, т.е. максимальные степени y X.
Далее в вычитателе 24 находится арифметическая разность их порядков (разность максимальных степеней полиномов) и на основе выходного сигнала вычитателя в сдвиговом регистре 28 производится сдвиг всего записанного полинома в сторону увеличения степени на полученную величину этой арифметической разности. Таким образом, после этого сдвига порядки (максимальные степени) полиномов, записанных в третьем регистре 22 и в сдвиговом регистре 28 становятся одинаковыми. Эти полиномы подаются на второй блок сравнения 17 и на блок 25, где производится их поразрядное сложение по модулю 2.
Во втором блоке сравнения 17 сравниваются полиномы, записанные в регистрах 22 и 28. Если они равны между собой, то второй блок сравнения сообщает об этом блоку управления 27. После чего данный цикл заканчивается, блок управления открывает четвертый коммутатор 15 и сигнал с выхода четвертого регистра 23 подается на второй блок памяти 11. В этом втором блоке памяти каждому возможному виду полиномов соответствует своя ячейка памяти. Первоначально до начала процедуры диагностики все ячейки содержат нули. Когда в очередном цикле определен очередной полином, то в ячейку ему соответствующую прибавляется единица к той сумме, которая там уже была записана ранее.
Если второй блок сравнения 17 не зафиксировал равенства полиномов в третьем и четвертом регистрах, результат сложения в блоке 25 подается на другой вход первого коммутатора 12, а на другой вход второго коммутатора 13 подается полином, записанный в четвертом регистре 23. После этого на выходы обоих коммутаторов подключаются не сигналы с первого блока памяти 10, а вновь поступившие сигналы с их других входов. После этого вся последовательность действий повторяется. Работа коммутаторов, регистров и блоков памяти управляется блоком управления 27.
Когда перебраны все N(N-1)/2 сочетаний рассматриваемых кодовых блоков, во втором блоке памяти 11 в различные ячейки оказывается записанными разное количество единиц. После этого блок выделения максимальной суммы определяет, в какой ячейке записано максимальное число. Полином, соответствующий этой ячейке, подается на выход, как конечный результат всей процедуры диагностики.
Рассмотрим операции предлагаемого способа подробнее. Как известно, при несистематическом кодировании каждое i-й кодовый блок может быть описан в виде произведения двух полиномов: yi(X)=mi(X)g(X), где g(X) - порождающий полином используемого кодера, общий для всех кодовых слов; mi(X) - часть i-го кодового слова, содержащая передаваемую в нем информацию. То есть все кодовые блоки имеют как минимум один общий полином g(X). Максимальная степень полинома g(X) равна b. Степень полинома mi(X) зависит от передаваемой в данном блоке информации и может достигать максимальной величины, равной k.
При систематическом циклическом кодировании кодовый блок в кодере формируется по-другому. Для этого исходный двоичный информационный полином mi(Х) первоначально домножается на Xb, что соответствует сдвигу на b разрядов в сторону увеличения. В результате получается полином mi(Х)Xb с максимальной степенью, в общем случае равной n=k+b. Далее он делится на порождающий полином g(X). Максимальная степень образующегося остатка ri(Х) равна b, т.е. равна количеству нулей в записи mi(X)Xb, начиная с первого разряда. После этого остаток ri(Х) складывается с полиномом, образуя передаваемый по каналу передачи кодовый блок yi(X)=mi(X)Xb+ri(X). Таким образом, и в этом случае кодовый блок кратен полиному g(X), т.е. порождающий полином является одним из множителей полинома yi(X), и можно записать yi(X)=Mi(X)g(X). Именно этот факт используется в приемнике для вычисления синдромов ошибок и их исправления.
Если попарно сравнивать различные кодовые блоки, то хотя и наборы множителей, на которые разлагаются их полиномы, будут различаться, но множитель g(X) будет присутствовать во всех кодовых блоках. Естественно, иногда могут появляться одинаковые множители и в информационной части Mi(X) разных кодовых слов.
Обозначим одинаковые множители в информационной части двух сравниваемых кодовых блоков через MC(Х), а различающиеся части через Md1(X) и Md2(X). В другой паре кодовых слов часть MC(X) будет в общем случае отличаться от общей части в первой паре, в третьей паре отличаться от первых двух, и т.д. Таким образом, если сравнивать достаточно большое количество пар, то, несмотря на то что в каждой паре по отдельности кроме полинома g(X) будут общими и другие полиномы, во всей совокупности анализируемых кодовых блоков общим множителем будет только искомый порождающий полином g(X).
В соответствии с этим операции на фиг. 1 производят следующие действия. В операции 1 запоминается N поступивших на приемник кодовых блоков. Количество N должно быть достаточно большим, например значительно большим, чем общее число n символов в кодовом блоке.
Поскольку информационные части разных блоков в подавляющем большинстве случаев различаются, то и появление одинаковых множителей в информационной части также маловероятно, гораздо вероятнее, что общая часть будет состоять только из порождающего полинома. Большое количество N необходимо, чтобы вероятность появления при анализе именно искомого порождающего полинома была значительно больше, чем других результатов анализа. При дальнейшем увеличении N эта вероятность увеличивается, что дает возможность уменьшить ошибку диагностики до требуемых уровней.
Появление ошибочных символов при передаче по каналу связи лишь приводит к появлению других результатов анализа и запоминанию других видов полиномов. Это негативное явление может быть ослаблено до приемлемого уровня увеличением N. Таким образом, операция 1 обеспечивает запоминание N кодовых слов и попарную их передачу для последующей обработки. Количество пар различающихся кодовых блоков при этом равно N(N-1)/2.
Операция 9 производит сравнение и сложение подаваемых на нее кодовых блоков. Она состоит из нескольких последовательных операций. В операции 5 производится сравнение полиномов двух анализируемых кодовых блоков, и определяются максимальные степени полиномов обоих блоков. Пусть полином одного из кодовых блоков имеет вид y1(X)=aSXS+aS-1XS-1+aS-2XS-2+…, а второй полином равен y2(Х)=bTXT+bT-1XT-1+bT-2XT-2… и aS=bS=1. Операцией 5 сравниваются величины S и Т.
Предположим, оказалось, что S>T, т.е. полином y1 больше, чем полином y2. Тогда следующей операцией 6 поразрядного сдвига меньшего полинома производится домножение второго полинома на XS-T, т.е. поразрядный сдвиг в большую сторону на S-T всех его разрядов. Если же второй полином больше первого, то тогда первый полином домножается на необходимую разностную величину, т.е. сдвигается на соответствующее разностное число разрядов. В том случае, если максимальные степени обоих полиномов равны (т.е. S=T), то в операции 6 никакого поразрядного сдвига не производится. Таким образом, после операции 6 максимальные степени обоих полиномов станут совпадать.
Следующей операцией 7 сравнивается величина большего полинома и результата сдвига меньшего полинома. При этом возможны две различные ситуации.
Если в результате сдвига меньший полином становится равным большему полиному, то общая операция 9 попарного сравнения и сложения блоков прекращается. Вид меньшего полинома передается к операции 3 и запоминается.
Если же сравниваемые полиномы не равны между собой, то далее производится операция 8. В ней выполняется поразрядное вычитание по модулю 2 обоих полиномов. Поскольку их максимальные степени до этого были выровнены, то после осуществления этой операции максимальная степень разности уменьшается на единицу. После этого вновь осуществляется операция 5 сравнения полиномов, но уже с двумя другими полиномами, из которых один равен упомянутому меньшему полиному до его поразрядного сдвига, а другой - результату сложения по модулю 2 операции 7. После нее вновь выполняются описанные операции, пока операцией 7 не будет установлено равенство обрабатываемых полиномов.
Когда процедура, производимая общей операцией 9 сравнения и сложения полиномов, заканчивается, это приводит к тому, что в результате остаются общие для обоих анализируемых в ней кодовых блоков полиномы. Действительно, пусть сравниваемые кодовые блоки описываются полиномами: y1(X)=Md1(X)MC(X)g(X) и y2(X)=Md2(X)MC(X)g(X).
Как известно, поразрядные сложение и вычитание двоичных чисел по модулю 2 являются эквивалентными операциями, т.к. приводят к одинаковым результатам. Поэтому разностный полином y3=y1-y2=(Md1+Md2)MCg=(Md1-Md2)MCg=M3MCg будет содержать те же совпадающие общие множители, что и исходные полиномы до сложения, а изменяются только различающиеся полиномы.
Поскольку перед сложением (вычитанием) максимальный порядок меньшего полинома был временно приравнен к порядку большего, то после этой операции порядок результата сложения всегда уменьшается на единицу по сравнению с порядком максимального из анализируемых полиномов. Если после нее результат оказывается не равен меньшему из текущих полиномов, то вновь повторяется выравнивание порядков двух анализируемых полиномов и их вычитание. Порядок различающейся части (М3) вновь уменьшается на единицу и т.д. Таким образом, после проведения определенного числа повторяющихся операций 5-8 полином М3 становится равным единице. Число повторяющихся операций определяется конкретным видом полиномов Md1 и Md2 и равно порядку максимального их них.
Для примера рассмотрим подробно данный набор операций с двумя произвольными полиномами, состоящими из общей части g(X) и различающихся частей. Вид различающихся частей значения не имеет, поскольку конечный результат при любых различающихся частях всегда будет равным g(X). В качестве анализируемой пары полиномов выберем: y1=(X4+X+1)g(X) и y2=(X3+X2)g(X).
Первый полином y1 больше, чем второй полином y2. После первого сравнения этих двух полиномов операция 5 определяет, что второй полином должен быть умножен на Х, т.е. двоичное число его описывающее должно быть сдвинуто вверх на один разряд. После такого сдвига операцией 6 полиномы y1 и y2X остаются не равны, поэтому после сравнения в операции 7 они последующей операцией 8 складываются (вычитаются). Получается полином y3=y1-y2X=(Х4+Х+1)g(X)+X(X3+X2)g(X)=(X4+X+1+X4+X3)g(X)=(X3+X+1)g(X).
Результат сложения - полином y3=(X3+X+1)g(X) - вновь подается на операцию 5, где он сравнивается с меньшим (до сдвига) полиномом y2=(X3+X2)g(X). Вновь полученный полином y3 меньше, чем исходный меньший полином y2=(X3+X2)g(X), однако порядки их одинаковы (они равны 3). Поэтому операцией 6 поразрядный сдвиг не производится и после сравнения в операции 7 они складываются (вычитаются) операцией 8 без сдвига. В результате получается полином y4=(X3+X2)g(X)+(X3+X+1)g(X)=(X2+X+1)g(X).
Теперь операцией 5 вновь сравниваются полиномы y3=(X3+X+1)g(X) и y4=(Х2+X+1)g(X). Поскольку степень первого из них больше на единицу, то полином y4 теперь операцией 6 домножается на X. В результате получается полином Xy4=X(X2+X+1)g(X)=Х3+Х2+Х. Он также не равен полиному y3. Поэтому дальше производится операция 8. После вычитания в операции 8 получается полином y5=y3-Xy4=(X3+X+1)g(X)+X(X2+X+1)g(X)=(X2+1)g(X).
Операция 5 сравнивает его с меньшим из складываемых (до домножения на X) полиномов, т.е. с полиномом y4=(X2+X+1)g(X)).
Полученный полином y5 меньше меньшего из складываемых полиномов y4, но их степени совпадают. В результате теперь в операции 6 поразрядного сдвига не производится но сами полиномы не равны, поэтому операция 7 передает их к операции 8. Далее в операции 8 производится их сложение (вычитание), после чего получается результат: полином: y6=y4-y5=(Х2+Х+1)g(X)+(X2+1)g(X)=Xg(X).
После этого операция 5 сравнивает его с меньшим из складываемых полиномов, т.е. с полиномом y5=(Х+1)g(X). Степень полученного полинома y6=Xg(X) меньше, чем степень меньшего из складываемых полиномов (имеется в виду полином y5=(Х+1)g(X)), поэтому полином y6=Xg(X) после операций 5 и 6 умножается на X.
После такого умножения и после вычитания в операции 8 получается результат: y7=(X2+1)g(X)+X2g(X)=g(X).
После этого в операции 5 устанавливается, что степень предыдущего меньшего полинома y6=Xg(X) больше, чем степень полученного результата y7=g(X). Вследствие этого меньший полином y7 в операции 6 домножается на соответствующий множитель, определяемый разностью степеней, т.е. на X. После этого сравниваемые полиномы приобретают вид: y6=-Xg(X) и y7=Xg(X), т.е. становятся равными один другому.
Факт этого получившегося теперь равенства устанавливается операцией 7, после чего операцией 9 цикл попарного сравнения данной пары кодовых блоков завершается. Вид меньшего до сдвига полинома g(X) передается к операции 3. В ней запоминается полученный при анализе данной пары кодовых блоков результат, т.е. полученное найденное значение общего полинома.
Операцией 3 запоминаются найденные в данной паре кодовых блоков значения общего полинома. После анализа всех N(N-1)/2 сочетаний пар кодовых блоков оказываются запомненными все выявленные операцией 3 общие множители для всех пар. Среди них будут случайно присутствовать какие-то полиномы, входящие в информационные части разных пар блоков (разные для различных пар) и общий для всех порождающий полином.
Информационные части разных блоков различаются, и появление одинаковых множителей в информационной части также маловероятно, гораздо вероятнее, что общая часть будет состоять только из порождающего полинома.
После завершения данного анализа всех сочетания кодовых блоков операция 4 (выбор максимального числа результатов) определяет максимальное число общих полиномов-множителей, выявленных при сравнении всех пар.
Вероятность появления в каждом цикле анализа только порождающего полинома g(X) гораздо выше, то именно он будет определен максимальное число раз, а все другие результаты, появляющиеся случайно, будут зафиксированы меньшее число раз. Поэтому операция 4 определит именно полином g(X), являющийся искомым результатом диагностики.
Для каждой пары кодовых слов производится постепенное циклическое уменьшение порядка соответствующих полиномов до тех пор, пока в паре не останутся только общие полином для каждой пары. Если максимальная степень различающихся частей равна k, то в общем случае общий полином будет получен максимум за k повторений описанного набора операций.
Таким образом, заявляемый способ позволяет определять структуру используемого кодера без предварительной информации о ней и обеспечивать эффективную работу декодера по исправлению ошибок, тем самым повышая помехоустойчивость передачи информации.
название | год | авторы | номер документа |
---|---|---|---|
Способ диагностики недвоичных блоковых кодов | 2018 |
|
RU2693190C1 |
Способ диагностики сверточных кодов | 2015 |
|
RU2616180C1 |
ГЕНЕРАТОР ПСЕВДОСЛУЧАЙНЫХ БИНАРНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ | 2009 |
|
RU2427886C2 |
ДЕКОДЕР С ИСПРАВЛЕНИЕМ СТИРАНИЙ | 2008 |
|
RU2379841C1 |
Система декодирования двоичных последовательностей | 1991 |
|
SU1807563A1 |
СПОСОБ ВОССТАНОВЛЕНИЯ ЗАПИСЕЙ В ЗАПОМИНАЮЩЕМ УСТРОЙСТВЕ, СИСТЕМА ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ | 2010 |
|
RU2448361C2 |
ПАРАЛЛЕЛЬНЫЙ РЕКОНФИГУРИРУЕМЫЙ КОДЕР БЧХ КОДОВ | 2015 |
|
RU2591474C1 |
РЕКОНФИГУРИРУЕМЫЙ КОДЕР БЧХ КОДОВ | 2015 |
|
RU2601827C1 |
ПРОЦЕССОР ПОВЫШЕННОЙ ДОСТОВЕРНОСТИ ФУНКЦИОНИРОВАНИЯ | 2010 |
|
RU2439667C1 |
СПОСОБ ШИФРОВАНИЯ С ЗАЩИТОЙ ОТ КВАНТОВЫХ АТАК НА ОСНОВЕ ЦИКЛОВ ФУНКЦИЙ ВЕБЕРА | 2013 |
|
RU2541938C1 |
Изобретение относится к технике связи. Технический результат – повышение помехоустойчивости передачи информации. Для этого способ диагностики циклических кодов предусматривает выбирать определенное количество кодовых блоков и анализировать различные пары кодовых блоков. Посредством циклически повторяемой процедуры сдвига одного из полиномов, описывающих кодовые блоки, и поразрядного сложения по модулю 2 обрабатываемой пары полиномов возможно находить общий полином рассматриваемой пары. Результаты каждой процедуры анализа фиксируются, и после осуществления достаточного количества процедур сравнивается количество полученных результатов для каждого обнаруженного вида общих полиномов. Искомый порождающий полином является общим для всех кодовых блоков и появляется наибольшее число раз. Это обнаруживается и используется как результат диагностики. 2 ил.
Способ диагностики циклических кодов, включающий в себя поразрядный сдвиг полинома и поразрядное сложение по модулю 2, отличающийся тем, что в него вводят запоминание N кодовых блоков, извлечение пар кодовых блоков, запоминание вида полиномов, описывающих кодовые блоки, выбор максимального числа результатов, попарное сравнение и сложение кодовых блоков, сравнение полиномов и сравнение результата со сдвинутым полиномом, при этом сначала запоминают N кодовых блоков, затем извлекают пары кодовых блоков, после этого кодовые блоки попарно сравнивают и складывают, далее запоминают вид полученных в результате сравнения и сложения полиномов, после чего выбирают максимальное число полученных одинаковых результатов сравнения и сложения, причем при попарном сравнении и сложении кодовых блоков сравнивают два выбранных полинома, описывающих сравниваемые кодовые блоки, затем поразрядно сдвигают меньший полином, после чего сравнивают больший полином со сдвинутым меньшим полиномом, в случае их равенства вид меньшего полинома до сдвига запоминается, в случае их неравенства поразрядно складывают по модулю 2 больший полином и сдвинутый меньший полином и возвращаются к сравнению меньшего полинома и полученного результата сложения по модулю 2.
СПОСОБ ПЕРЕДАЧИ ДАННЫХ | 2008 |
|
RU2448417C2 |
Устройство декодирования линейного циклического кода | 1976 |
|
SU603138A1 |
Устройство для декодирования циклических кодов | 1976 |
|
SU613515A2 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
US 4320511 A1, 16.03.1982. |
Авторы
Даты
2017-09-19—Публикация
2016-02-29—Подача