Главная страница Дискретный канал связи [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [ 57 ] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] ошибка поймана, она исправляется в информационном регистре, а в синдромном регистре во устанавливается равным нулю (или вычитается сам из себя). После 14 тактов синдромный регистр содержит синдром оставшейся конфигурации ошибки. Процесс повторяется в течение последних семи тактов, после чего исправление ошибок закончено полностью. Если в начале синдром оказался отличным от нуля, а в течение вторых семи тактов работы декодера не была поймана ни одна ошибка, то в принятом слове произошло более двух ошибок (но обратное утверждение неверно). Это позволяет легко включить в декодер дополнительную логическую цепь для обнаружения неисправляемых конфигураций ошибок. В качестве "последнего примера этого параграфа рассмотрим декодер с вылавливанием ошибок для кодов, исправляющих пакеты ошибок. В отличие от ситуации для кодов, исправляющих независимые ошибки, исправляющие пакеты ошибок коды всегда допускают декодирование с вылавливанием ошибок. Мы опишем декодер для (14, 6)-кода, исправляющего пакеты ошибок длины 4. Этот код получается перемежением двух копий (7, 3)-кода из табл. 5.1. Порождающий многочлен кода-перемежения равен g (х) = + + + \ . Вылавливание пакета ошибок длины не более 4 сводится к проверке равенства нулю четырех самых левых символов синдрома. Схему, однако, можно немного улучшить. Заметим, что разряды с четными номерами и разряды с нечетными номерами не взаимодействуют. Поэтому цепь вычисления синдрома можно рассматривать как две независимые цепи вычисления синдромов для каж- Ввой Iff Битов, собержйщих пакет ошибок. Всего 1Ъ тактов Вывов М ffumoB Без оши&ки Рис. 6.29. Декодер с вылавливанием ошибок для кода-перемежения, исправляющего пчкеть! ошибок, 6.6. Vkot>04EHHbiE циклические Кбды if§ ДОо из двух перемежаемых кодов, но с последующим перемеже нием позиций синдромов. Такая модификация декодера с вылавли ванием ошибок показана на рис. 6.29. Этот декодер позволяет ис» правлять все пакеты ошибок длины 4, а также некоторые дополнительные конфигурации ошибок. Исправляется любая конфигурация, состоящая из пакета Длины 2 в позициях с нечетными йомерами и пакета длины 2 в позициях с четными номерами, 6.6. УКОРОЧЕННЫЕ ЦИКЛИЧЕСКИЕ КОДЫ Любой систематический циклический код можно укоротить, а именно от (п, к)-кода можно перейти к (п - Ь, k - &)-коду выбрасыванием Ъ информационных позиций в каждом кодовом слове. Будем полагать, что b меньше k и что выбрасываются b старших разрядов. Последнее объясняется тем, что выбрасываемые символы при укорочении полагаются равными нулю и поэтому не передаются, но при декодировании декодер их восстанавливает, так что декодирование осуществляется на полней длине кода. Если минимальное расстояние исходного кода равно d*, то минимальное расстояние укороченного кода не меньше d*. Аналогично если исходный код позволяет исправлять пакеты ошибок длины t, то укороченный код позволяет исправлять пакеты длины t (или больше). С помощью укорочения и перемежения из кодов табл. 5.1 можно построить большой набор хороших кодов, исправляющих пакеты ошибок. Укороченный циклический код уже не является циклическим, так как многочлен Rn i ixc (х)] в общем случае уже не является кодовым словом для произвольного кодового слова с (х). Однако укороченный циклический код все-таки обладает алгебраической структурой подмножества соответствующего кольца. В то время как циклический код является идеалом кольца многочленов по модулю X" - 1, укороченный циклический код является идеалом кольца многочленов по модулю некоторого многочлена / (х) степени п = п - Ь. Точный результат дается следующей теоремой. Теорема 6.6.1. Еслиё -укороченный циклический код, то существует многочлен f (х), такой, что если с (х) - кодовое слово, а а (х) - произвольный многочлен, то Rf х) f« (х) с (х) ] также является кодовым словом. Доказательство. Пусть g (х) - порождающий многочлен укорачиваемого циклического кода длины п, и пусть п - длина укороченного циклического кода. Тогда, согласно алгоритму деления, X" =g{x)Qix) +8{Х). Так как п = п -Ь>п - k = deg g (х), то степень остатка s{x) меньше п. Пусть f (х) = х"- - six); тогда степень много- 180 гл. 6. схЕлшАя реализации! члена f (х) равна п и g (х) делит f (х). Если с (х) кратен g (х) и а (х) - произвольный многочлен, то, согласно алгоритму деления, имеем а (х) c{x) = t {X) Q {х) + г {х). Так как g {х) делит и с [х), и / {х), то г {х) кратен g {х); таким образом, в кольце GF{q)[xV{f (х)) многочлен а (х) с [х) = г {х) кратен многочлену g{x), что и требовалось доказать. □ Укороченный циклический код длины п = п - Ъ можно декодировать с помощью декодера Меггитта, сконструированного для исходного (п, )-кода. Отсчет времени в таком декодере основан на rpynnaji: по п тактов, хотя входное кодовое слово содержит п символов. Это временное рассогласование иногда удается устранить конструкцией устройства, так что оно становится несущественным; в других случаях целесообразнее сбалансировать время. Мы рассмотрим такую модификацию принятого слова, которая позволяет перестроить работу декодера Меггитта на цикл из п тактов и соответственло ускорить декодирование укороченных циклических кодов. Переопределим синдром так, чтобы можно было обойти тактовое время работы регистра, соответствующее выбрасываемым символам. Вместо вычисления остатка от деления многочлена X"-- V (х) на g (х) определим синдром при Ъ выбрасываемых символах равенством s{x\Rgx)[x-~+v{x)\. Чтобы обосновать такой выбор, предположим, что старший символ укороченного циклического кода ошибочен, т. е. что e(x) = e„ ix"-)-. Тогда s(x)=-./?g [е„- ,х2"-"-Ч = = Rg W [Rxn , [e„, ix2"-*-]] = e„. iX"-"-i. Следовательно, единственным ненулевым коэффициентом многочлена S (х) является старший коэффициент. Пусть Тогда, согласно правилам вычислений по модулю, многочлен S (х) можно записать в виде S (х) = Rgx [а (х) v (х)]. Все, что нужно сделать, сводится к предварительному (перед делением на g (х)) умножению v (х) на фиксированный многочлен а (х). Такое умножение можно реализовать с помощью устрой- [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [ 57 ] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] 0.0205 |