- •Державний комітет зв’язку та інформатизації
- •Перелік умовних позначень
- •Розділ 1 аналіз закономірностей побудовИk-значних статичних мікроелектронних структур
- •1.1. Термінологічний аналіз та обґрунтування принципу симбіозу
- •1.2. Архітектурно-логічні побудови цифрових іk-значних структур
- •1.3. Дослідження архітектур просторових цифрових комутаторів
- •1.4. Завдання аналiзу та оцiнки надiйностik-значних структур
- •1.5. Математичні моделіk-значного кодування
- •1.6. Методи і засобиk-значного кодування з надлишком
- •1.7. Дослідження метричних властивостейk-значних кодів
- •1.8. Вибір перспективних шляхів побудови просторовихk-значних структур
- •Висновки до першого розділу
- •Розділ 2 узагальнена теорія побудови високоефективних просторових статичниХk-значних структур
- •2.1. Структураk-значної площинно-просторової комірки
- •2.2. Формалізація принципу симбіозу багатовходовихk-значних структур
- •2.3. Метричні властивостіk-значних комутацiйних структур
- •2.4. Аналіз узагальнених статистичних параметрівk-значних структур
- •2.5. Аналiз точності дії статичнихk-значних структур
- •Висновки до другого розділу
- •Розділ 3 методи оцінки параметрів каналів іЗk-значним кодуванням
- •3.1. Ентропійні параметри k-значних каналів без завад
- •3.2. Властивості симетричних каналів ізk-значним кодуванням
- •3.3. Імовiрнiсть помилки пiд час декодуванняk-значних систематичних кодiв
- •3.4. Необхідна вносима надлишковість статичних просторовихk-значних структур
- •Висновки до третього розділу
- •Розділ 4 моделі, алгоритми та структурИk-значного кодування систематичними кодами
- •4.1. Математичні моделі кодування кодами Ріда – Соломона з крос-перемежуванням (circ-кодами)
- •4.2. Математичні моделі декодуванняCirc-кодів
- •4.3. Синтез алгоритмівk-значного кодування/декодування
- •4.4. Способи організації обчислень та синтезу структур операційних засобівCirc-кодера/декодера
- •4.5. Аналіз принципів побудови та дії двокаскадногоCirc-декодера
- •4.6. Порівняльний аналіз cтратегій декодуванняCirc-декодерів
- •Висновки до четвертого розділу
- •Розділ 5 принципи побудовИk-значних просторових пристроїв зовнішнього обміну (пзо)
- •5.1. Класифікації просторовихk-значних структур
- •5.2. Узагальнений рекурсивний структурний та формальний синтез пзо
- •5.3. Методи побудови рекурсивних струмових та потенційних пзо
- •5.4. Синтез просторових комутаторівk-значних сигналів
- •Висновки до п’ятого розділу
- •Розділ 6 математичні моделі, методи і структурні побудови універсальних функціональних перетворювачів (уфп) просторового типу
- •6.1. Моделі та методи структурного синтезу просторових уфп
- •6.2. Математичні моделі комбінаційного синтезу проміжних дешифраторів уфп
- •6.3. Моделі та методи структурного синтезу в асп просторових уфп
- •6.4. Моделі та методи синтезу в асп проміжних дешифраторів уфп
- •6.5. Моделі та методи синтезу в асп багатовходових уфп
- •Висновки до шостого розділу
- •Розділ 7 синтез та реалiзацiя k-значних операцiйних пристроїв новітніх обчислювальних систем
- •7.1. Класифікація операційних пристроїв
- •7.3. Чотиризначний матричний множник елементів поляґалуаGf(28)
- •7.4. Побудова паралельного конвеєрного арифметичного пристрою
- •7.5. Метод та засоби регенеруванняk-значних цифрових послiдовностей
- •Далі, оскільки сигнал має цифрову форму, то
- •Висновки до сьомого розділу
- •Основнi результати роботи та висновки
- •Список використаних джерел
4.3. Синтез алгоритмівk-значного кодування/декодування
Для аналізу та моделювання шляхів побудови і процесів роботи CIRC-кодера/декодера синтезовано [5, 132] два комплекси програм: перший – для кодування в складі головної програми, що дістала позначення KODPER (рис. 4.2) та підпрограм GALUA, KOD1, KOD2, RAND2, SUMQ, RSYS2, SUMP; інший – для декодування під керуванням програми MODC5 (рис. 4.3.) підпрограмами SINDR, DSINDR, KORR1, KORR2, KORR22, KORR3, KORR4. Перший та другий комплекси використовують також спільні підпрограми IADD, IADD2, POIND.
Рис. 4.2. Структурна схема програмних засобів двокаскадного CIRC-кодера (CIRC-encoder)
Рис. 4.3. Структурна схема програмних засобів двокаскадного CIRC-декодера (CIRC-decoder)
Процес кодування здійснюється під керуванням основної програми KODPER. У цій програмі визначаються: розмір М1 = 32 блоки інформаційних символів під час кодування на етапі С1 та мінімальне число блоків KB = 108 і, відповідно, на етапі С2 – M2 = 28 та KB2 = 28; число блоків, що пройшло етапи кодування С1 та С2 – KP = 4 (може бути довільним, основне обмеження – це величина оперативної пам’яті ЕОМ). У подальшому обчислюється число блоків, що підлягає кодуванню на етапі С1: КР1 = KB1 + KP та на етапі С2: KP1 = KB2 + KP.
Кодування та декодування здійснюються в скінченному полі ґалуа GF(28), що згенероване згідно з модулем многочлена F(x) = x8 + x4 + x3 + x2 + 1 підпрограмою GALUA. Спочатку в підпрограмі задається примітивний елемент = 00000010 (як вектор ІХ) і вектор ІР, що складається зі степенів коефіцієнтів поліному F(x): для прикладу = 00011101, а також формуються перший елемент масиву IPL(1, j), що дорівнює та останній елемент поля IPL(256, j), який дорівнює нулю.
Остаточний масив IPL(256, 8) – це масив усіх елементів поля ґалуа, отриманий у результаті роботи підпрограми GALUA і сформований згідно з наступною процедурою з примітивним елементом. Кожний наступний елемент поля, починаючи з другого та закінчуючи 255-м, отриманий із попереднього зсувом одиниці на один символ уліво. Наприклад, якщо перший елемент <00000010> (він же примітивний), то другий – <00000100>, третій – <00001000> тощо. Останній символ завжди нульовий і якщо після останнього зсуву вліво перший дорівнює 1, то після зсуву до даного елемента необхідно додати за модулем 2 елемент IР. Додавання за mod 2 здійснюється підпрограмою IADD. Заключний результат роботи підпрограми записується у файл KOD OUT. Слід зазначити, що елементи поля ґалуа можна отримати як степені примітивного елемента , наприклад, елемент = <11011111>. Наш масив побудований таким чином, що перший індекс дорівнює показникові степені примітивного елемента:=IPL(I, j), причому =IPL(255, j) = <00000001>, a 0 = IPL(256, j) = <00000000>.
У процесі кодування/декодування СIRC-кодом усі обчислення здійснюються з показниками степенів примітивного елемента за винятком додавання за mod 2, але після додавання відразу ж відновлюється показник степені суми з допомогою підпрограми POIND.
Перейдемо до процедур формування блоків КР2 інформаційних символів, тобто масиву IW2(KP2, M2). Формується він поблочно з допомогою підпрограми KOD2, тобто етап кодування С2 виконується підпрограмою KOD2. У підпрограмі матриця рішення системи (4.4) закладена у вигляді масиву KOEF(4, 4).
Двадцять чотири інформаційні символи генеруються випадковим чином, тобто з допомогою підпрограми RAND2 утворюється масив IN(24) як масив показників степенів відповідних інформаційних символів. Генерування псевдовипадкових чисел, рівномірно розподілених у проміжку здійснюється підпрограмоюRAND2(I, N, S). Обчислення вільних членів системи (4.2) здійснюється підпрограмою SUMQ. У цій підпрограмі задаються інформаційні символи Wі (див. рис. 4.1) як масив INDEX(24) і визначаються вільні члени Ti у вигляді масиву IN(4).
Розв’язує систему рівнянь (4.2), згідно з виразом (4.4), підпрограма RSYS2. На завершення своєї роботи підпрограма KOD2 формує блок IN(28) даних із 28 cимволів, серед яких 4 перевірні Q-символи IND(4) вставлені посередині блока, що підлягає передачі.
Перед тим, як перейти до наступного етапу С1 кодування, здійснюється перемежування П2, тобто з масиву IW2(220, 28) утворюється масив IW12(112, 28). Розміри масиву задані початковими значеннями, виходячи з наведених співвідношень:
Другий етап кодування C1 реалізовано в підпрограмі KOD1 (див. рис. 4.2). У ній матриця з елементів поля системи (4.7) задана у вигляді масиву KOEF (4). Вносимі в підпрограму інформаційні символи IN(28), отримані в результаті першого етапу С2 кодування, передаються у підпрограму SUMP для створення масиву IND(4) вільних членів Vі системи.
Наступний крок алгоритму – розв’язок системи (4.7) із використанням описаної підпрограми та формування масиву IN(32) закодованих символів. Із останніх організовується масив IW11(112, 32), що є остаточним результатом роботи кодерів С1 та С2 і перемежувача П2.
Для імітації роботи декодера з пошуку та виправлення помилок формується масив, що записується в окремий файл під назвою MODIN, який зчитується в основній програмі в такому порядку: номер блока, в який вносяться помилки (NB = 1, ..., KP1), число помилок у блоці (KO = 1,...,4), номер символу (III = 1,...,32), помилка (IW11)NB, III(1,...,256), перемикач (KIN=1, для продовження введення). Якщо KIN 1, то у файл KODOUT записується масив закодованих символів із помилками IW11(J, I), J = 1, KP1; I = 1, M1. На цьому перший комплекс програм завершує роботу. Його вихідний файл KODOUT буде служити вхідним для комплексу програм декодування. Зазначимо, що в першому комплексі використовуються також програми, що здійснюють обчислення в полі ґалуа: IADD2, IADD та POIND.
Тепер перейдемо до розгляду процесу декодування, що здійснюється під керуванням головної програми MODC2 із допомогою другого комплексу програм, зв’язки між підпрограмами якого показано на рис. 4.3. Суть процесу декодування полягає у визначенні синдромів помилок зі співвідношення (4.1), яке можна зобразити у вигляді:
або n = 28.
Обчислення синдромів на першому (С1) та на другому (С2) етапах декодування здійснюються однією підпрограмою SINDR. Крім того, для виявлення місцезнаходження помилок (локаторів помилок) із допомогою підпрограми DSINDR обчислюються додаткові синдроми A1 = S0S2 + S1S1; A2 = S1S2 + S0S3; A3 = S1S3 + S2S2. За наявності помилок вони коректуються з допомогою підпрограм KORR1, KORR2, KORR22, KORR3, KORR4. Зауважимо, що в разі обчислення 4-х синдромів можна визначити місце та виправити не більше ніж дві помилки або тільки виправити не більше ніж чотири помилки [52]. При цьому на етапі С1 декодування визначається місце й виправляється одна чи дві помилки. Якщо помилок більше ніж дві, то для такого блока даних встановлюється прапорець. На другому етапі С2 декодування коду РС(28, 24) із допомогою прапорців можна знайти місце помилки й скоректувати 1, 2, 3 чи 4 помилки.
Робота основної програми MODC2 починається зі завдання розмірів блока інформаційних символів для декодування С1 – М1 = 32 та для C2 – M2 = 28. Із файла KODOUT зчитується масив IPL(256, 8) елементів поля ґалуа GF(28), а також блок символів із того ж вхідного файла та перевіряється ознака кінця масиву вхідних даних (у нашому випадку це число 999, яке записується у файл KODOUT після масиву IW11(112, 32). Якщо виявлено кінець даних, програма MODC2 завершує свою роботу.
У подальшому, із допомогою підпрограми SINDR, обчислюються та аналізуються синдроми за наведеною далі схемою. Якщо всі синдроми дорівнюють нулю, то помилок у даному блоці символів немає і програма MODC2 переходить до зчитування наступного блока символів. В іншому разі обчислюємо додаткові синдроми з допомогою підпрограми DSINDR.
Якщо всі додаткові синдроми дорівнюють нулю, то наявна одна помилка. Її місцеперебування визначається і вона виправляється підпрограмою KORR1 після чого зчитується наступний блок. Якщо додаткові синдроми не дорівнюють нулю, то робиться припущення про наявність двох помилок і викликається підпрограма KORR2. У цій підпрограмі спочатку розраховуються локатори помилок, тобто місце розташування помилкового символу в блоці.
Якщо локатори перебувають у проміжку , то наявні дві помилки, які в цій же підпрограмі витираються і алгоритм переходить до зчитування наступного блока. Якщо локаторів >32 чи <1, то робимо висновок, що помилок >2 і даному блоку інформаційних символів присвоюється значення прапорця, що дорівнює одиниці.
Якщо ж частина додаткових синдромів дорівнює нулю, а частина ні, то також робиться висновок про те, що помилок >2 і присвоюється прапорець, який дорівнює одиниці. Цей процес продовжується доти, доки не буде зчитано 109 блоків. Після закінчення формується масив IW12(109, 28). Розмір блока – 28 символів, оскільки після декодування С1 перевірні символи відкидаються.
Переходимо тепер до деперемежування ДП2 та декодування С2. За наявності масиву IW12, новий блок даних формується так:
IN(I) = IW12(4(M2 – I) + 1, I), I = 1, ..., M2; M2 = 28.
Для цього блока даних обчислюємо синдроми з допомогою тієї ж підпрограми SINDR. Якщо всі синдроми нульові, то помилок немає і починається перевизначення масиву IW12 таким чином: другий блок стає першим, третій – другим, ..., 109-й – 108-м тощо. Аналогічно перевизначається масив прапорців і здійснюється перехід до наступного блока даних, який після декодування С1 стає 109-м блоком масиву IW12. Виконується деперемежування й декодування С2.
Слід пам’ятати, що перед перевизначенням масивів IW12 та FLAG із блока інформаційних символів відкидаються перевірні Q-символи і блок записується у вихідний файл OUTR.
Якщо синдроми ненульові, то визначаємо місцеперебування помилок із допомогою деперемежування масиву прапорців. Локатори заносимо в масив KOL.
Якщо помилок більше ніж чотири, то вважаємо весь блок помилковим і відкидаються Q-символи (див. рис. 4.1), а блок записується у вихідний файл. Якщо ж помилок немає, то процедура виглядає аналогiчно. Якщо помилок 1, 2, 3 чи 4, то викликаються вiдповiдно пiдпрограми KORR1, KORR22, KORR3 чи KORR4. Пiсля стирання помилок також вiдкидаються Q-символи й записується блок у файл OUTR, продовжується процес перевизначення масивiв i декодування нових блокiв даних й алгоритм декодування переходить до аналiзу та декодування нового блока даних Wі.