In: Програмиране
29 Apr 2009Кодирането е наука за защита на данните от неоторизиран достъп. Кодирането е и метод за преобразуване на информацията чрез прилагане на алгоритъм така, че да няма нищо общо с оригинала и никой друг да не може да го прочете. Но алгоритмите за кодиране трябва да осигуряват възможността за извличане на необходимата оригинална информация.
Обект на настоящият реферат е изследването на външно (Риид-Соломон) кодиране при пренасяне на цифрова информация. Целта на външното кодиране е безпогрешното предаване на информацията в канала за връзка. Алгоритмите за откриване и коригиране на грешките изискват добавянето на специални служебни символи, които увеличават общия обем на пренасяната в канала за връзка информация.
В реферата е разгледан подробно и описан блоков (Reed Solomon) код. Разработен е и пример за симулация на базата на програмния продукт MATLAB.
1. 1. Основни сведения
Целта на кодирането на канала е, да се осигури квазибезпогрешно приемане на цифровата информация, което означава не повече от една грешка в течение на един час приемане. Тази задача се решава с избор на съответни средства за защита от грешки. При кодиране на канала се формира цифрова поредица, която се подава на модулатора, който е съгласуван с параметрите на канала за пренос – наземен, спътников или кабелна разпределителна мрежа, за да се пренесе цифровият сигнал с максимална възможна скорост при минимален брой грешки. Наред с изискването за минимален брой на допуснатите грешки при предаване, канала за връзка е със зададени параметри – широчина на честотната лента, шумови, предавателни характеристики и др.
Процесът на канално кодиране се състой от следните стъпки, а те са [2]:
равномерно разпределение на енергията на сигнала;
външно кодиране за защита от грешки;
разместване на битовете в рамката;
вътрешно кодиране за защита от грешки;
формиране на основната лента на сигнала.
Кодирането на канала се предхожда от формирането на мултиплексния сигнал, показано на фиг.1.1:
Цифровият сигнал след кодирането на източника се подава на мултиплексор. Задачата на мултиплексора е да се комбинират цифровите потоци на няколко цифрови телевизионни програми (видеосигнала с един или няколко звукови съпроводи) на радиопрограмите и на други допълнителни цифрови информации. След кодирането на източника цифровият поток на телевизионната програма така се редуцира, че става възможно в съществуващите телевизионни канали едновременно да се предават по няколко програми.
След мултиплексора, скоростта на цифровия поток става равна на сумата от скоростите на цифровите потоци на отделните телевизионни програми.
Предаването на цифровите поредици става по такъв начин, че в демултиплексора в приемната страна да се отделят цифровите потоци на отделните телевизионни програми.
В системите за предаване на цифрова информация бит-последователността е организирана в рамки фиг.1.2 [2]:
Фиг. 1.2. Структура на рамката след кодиращо устройство
В системите за предаване на цифрова информация бит-последователността е организирана в рамки (Frame – фиг.1.2) – съвкупност от последователни битове, започващи с бит (битове) за синхронизация, наричан(и) флаг или заглавие (Header) и следвани от информационно поле, което съдържа полезната информация и допълнителна информация, необходима за откриването и коригирането на грешки. Във флага се предава информация за синхронизиране на рамките, за управление, идентификация и кодиране, както и за други системни функции. Битовете във флага (заглавието) се наричат още служебни битове (overhead bits). Те практически служат за управление на комуникационния процес и не достигат до крайния потребител.
Основната функция на кодирането на канала е добавянето на допълнителна информация за защита от грешки. В резултат на това скоростта на цифровия поток след кодирането на канала се увеличава, което е в основата на Интернет.
При приемането и декодирането на цифровия сигнал съществува вероятност за възникването на грешка в отделни битове или в група от битове. Всяка грешка изкривява приетото съобщение, а при по-голям брой грешки приетата информация става неизползваема. Вероятността за грешка се увеличава с намаляване на отношението сигнал/шум на входа на приемното устройство.
Съществуват много фактори, които могат да доведат до грешки при декодирането на цифровия сигнал. Обикновено грешките се предизвикват от съвкупност от фактори.
За намаляване вероятността за цифрова грешка в цифровия сигнал се въвежда защита от грешки с използването на съответни алгоритми. На защита от грешки се подлага формирания от мултиплексора цифров поток на полезна информация. Защитата от грешки означава откриването на грешките в цифровия поток след приемането им и отстраняването на откритите грешки [2].
За намаляване вероятността за цифрова грешка в цифровия сигнал се въвежда защита от грешки с използването на съответни алгоритми. На защита от грешки се подлага формирания от мултиплексора цифров поток на полезна информация. Защитата от грешки означава откриването на грешките в цифровия поток след приемането им и отстраняването на откритите грешки.
Защитата от грешки става с добавянето на допълнителни битове към информационните битове, т.е. с добавянето на излишък към полезната информация, който позволява в приемното устройство да се открият и коригират грешно приетите битове. Целта на оптималната защита от грешки е с минимално добавени допълнителни битове да се получи максимална защита. Какво мисли нашия уеб дизайнер и програмист по този въпрос? Защитата от грешки при цифровото телевизионно разпръскване е два вида:
- външна защита;
- вътршна защита.
Външната защита се прилага към цифровия сигнал непосредствено след мултплексора, а вътрешната – преди модулацията (фиг.1.3).
Фиг. 1.3. Външна и вътрешна защита от грешки
Външната и вътрешната защита трябва взаимно да са съгласувани и да се допълват. В приемната страна има съответно декодери за външна и вътрешна защита, които възтановяват сигнала от мултиплексора [2].
Фиг. 1.4. Видове грешки при приемане на цифрова поредица
Грешката при приемането на дадена цифрова поредица може да е:
Трите вида грешки са пояснени на фиг.1.4. Дължината на символа в примера е приета k=6 бита.
Целта на всяко кодиране за защита от грешки е откриването и ко-ригирането на определен вид грешка. Първата стъпка в откриването на грешката е определянето на грешно приет блок в цифровата поредица, а следващата стъпка трябва да е определяне на грешния бит в блока и изправянето му.
За защита от грешки съществуват два основни метода:
При блоково кодиране цифровият поток се разпределя на блокове с фиксирана дължина, като в граничния случай дължината на блока може да е един бит. В този случай се говори за бинарен код. В общия случай блокът се състои от m бита и се говори за символен код. При кодирането към всеки блок от m информационни бита се добавят k бита за защита от грешки, които създават излишък и служат за откриване и коригиране на грешките при приемането на информационни битове. По този начин дължината на блока става (фиг.1.5 ) n (m k) бита.
Фиг. 1.5. Блоково кодиране
В системите за DVB се използва блоковият код на Reed Solomon, означаван често като RS – код. Този код е цикличен и подходящ за коригиране на пакетни грешки. Той се използва и в системите за оптичен запис на видео, звук и данни върху компакт-дискове, при записването на цифрова информация върху хард-дисковете в персоналните компютри, при предаване на данни чрез модеми и т.н.
Конволюционният (нагъващият) код (Convolution code) не е блоков код и съответно информационните и допълнителните битове за защита от грешки не са разделени едни от други, а обратното – информационните битове се вмъкват между битовете на конволюционния код. Понятието конволюция (Convolution – „нагъване”) произхожда от математиката и означава формирането на продукти от две функции, които са взаимно свързани. При последователността от числа Ai в последователност от числа Bi , при която числата Bi се получават като линейна комбинация от числата Ai.
В цифровите системи последователността А е входният цифров поток, а изходният „нагънат” цифров поток B се формира чрез функционалната организация на кодиращото устройство.
1.3. Разпределение на енергията в предавателния канал – скремблиране.
Разпределението на енергията не е процес на корекция на грешки, а е процедура с която се постига равномерно разпределение на енергията в радиочестотния канал.
Транспортните пакети са с дължина от по 188 байта, като първият байт е синхонизиращ и има стойност 01000111, а старшият бит се предава първи. При дълга последователност от нули и единици в цифровия поток се получава неравномерно разпределение на енергията в радиоканала. За да се избегне това се извършва разпределение на нулите и единиците чрез шифроване на цифровия поток с помощта на псевдослучайна двоична последователност, която се генерира с полином 1+х14+ х15.
Генераторът се рестартира след всеки осем транспортни пакета като неговия регистър се зарежда с комбинацията 100101010000000. За да се определи в приемника рестартирането, синхронизиращият байт на първия пакет е инвертиран, а седемте други байта в пакетите остават непроменени. Устройството за разпределение на енергията остава активно и при отсъствие на сигнал или когато на неговия вход е подаден цифров поток различен от стандарта MPEG-2.
1.4. Външно кодиране (RS – кодиране)
В цифровата телевизия за външно кодиране се използва кодирането на Риид-Соломон (RS кодиране). Това кодиране е известно още и като външно кодиране, защото се явява първият защитен слой за коригиране на грешки.
Кодовете на Риид-Соломон (RS кодове), са недвоични циклични блокови кодове, с кодови символи от полето на Галой (GF). Те са открити през 1960 г. от Ирвинг Риид и Густав Соломон, при съвместната им работа в лаборатория МИТ.
След десетилетия след тяхното откриване, RS кодовете са навлезли в различни приложения, в цифровите комуникации и запомнящите устройства. Риид-Соломон кодове се използват за коригиране на грешки в много системи, включително:
Типична система на Риид-Соломон код е показана на фиг.1.6:
Фиг. 1.6. Схема на Риид-Соломон кодиране
Риид-Соломон кодерът взема блок от цифрови данни и добавя допълнителни „излишни” битове. Грешки настъпват по време на предаване или съхранение поради много на брой причини (например шумове или смущения, надраскване на CD и т.н.). Риид-Соломон декодерът обработва всеки блок, открива коригираните грешки и възстановява първоначалните данни. Броят и типът на грешките, които могат да бъдат коригирани, зависи от характеристиките на Риид- Соломон кода.
С RS кодирането могат да бъдат коригирани до 8 грешни байта в един пакет. Над 8 грешни байта той се инициализира като грешен и некоригируем. Излишъкът от информация, въведена от RS кода е около 8%, като честотата на грешката достига от 10-4 ÷ 10-11.
Риид-Соломон кодирането се характеризира с три параметъра n, k и t, които определят размера на блоковете. Отделните параметри имат следните значения:
n – размер на блока в символи след кодирането;
k – размер на блока в символи преди кодирането;
t – брой на коригируемите символи.
При DVB системите размерите на транспортния пакет са , (RS 204, 188), и рандеманът на кода е с минимално Хемингово разстояние байта, при което се определя броя на коригираните грешни байтове в блок .
Кодовете на RS са недвоични циклични кодове с последователност от m-битови символи, където m е случайно положително цяло число със стойност, по-голяма от 2. RS (n, k) кодовете от m-битовите символи се отнасят за всички n и k, за които се отнася зависисмостта [3]:
(1.1)
където: k е поредното числото в кодирания блок и n е цялото число на символи за код в кодирания блок. Най-общоприетият RS (n, k) кодиране е:
(1.2)
където: t е поправящата грешка символ на кода и е числото на символи за равенство. Разширението на RS код може да бъде изграден с или , но не и в бъдеще.
Риид-Соломон кодът постига най-голямото възможно минимално разстояние за разлика от останалите линейни кодове от входа до изхода на кодера. За недвоичните кодове разстоянието между двете среди е дефинирано (аналогично на Хеминговото разстояние) като числото от символи, където последователностите се различават. За Риид-Соломоновото кодиране минимално разстояние се дава със следната зависимост:
(1.3)
Кодът е способен да поправя каквато и да е комбинация на t или по-малко грешки, където t може да бъде изразено като:
(1.4)
Уравнение (1.4) илюстрира, че RS кодовете поправят грешните символи на t и не изисква никакви допълнителни символи за повече от 2t равенството. За всяка грешка се използва един излишен символ, за да се намери грешката и един друг излишен символ, за да се намери правилната стойност на грешката. Способността ρ за заличаване на грешките с тези кодове е:
(1.5)
Способност за едновременна поправка на грешките и поправка на заличаване на грешките може да бъде изразено както следва:
(1.6)
където; е числото показващо грешните символи в образците, които могат да бъдат коригирани, а е числото за заличаване на символните образци, които също могат да бъдат коригирани. Преимуществото на недвоичните кодове към Риид-Соломон кодирането може да се види в следващото сравнение. Ако двоичен файл (n, k) = (7, 3) е кода, цялото n – пространството съдържа , от които (или от n) от кодираната среда. Недвоичните кодове (n, k) = (7, 3) е код, където всеки символ е съставен от бита, n – пространството възлиза на , от който (или от n) от кодираната среда. При символите от недвоичен характер, всеки символ е изграден от m битове, само малка част, т.е. от големите номера прави изключение. С увеличаване на стойността на m, стойността на тази част намалява. Важен момент е, когато малка част от n – пространството в използваната кодова част е създаването на голяма по стойност .
Както се вижда, RS кодовете имат забележителни свойства, т.е. те са способни да поправят каквито и да е грешки в последовател-ността. Тези кодове могат да бъдат използвани и за да се създаде даден излишък. Сложността на реализация на висока скорост нараства с излишъка. По този начин, най-привлекателните RS кодове имат висок код степени (слаб излишък). Под действие на смущаващи фактори в канала за връзка в RS-¬кода възникват грешки в символите. Грешките могат да бъдат в един бит на символ, или няколко бита в символ или целият символ да е грешно приет. В най-лошия случай RS-кодът може да коригира бит-грешки в 8 символа, а в най-добрия случай ¬8х8=64 бит-грешки в 8 символа (8 символни грешки). Структурата на RS-кода и алгоритмите за декодирането му позволяват откриването и коригирането както на грешно приети битове, така и на изтрити битове. Освен това RS-декодера получава информация и от демодулатора на цифровия радиосигнал по отделен канал за не надеждно демодулиране на конкретни символи – така наречените изтрити символи. Максимал-ният брой на коригираните изтривания е . Следователно общият брой на грешките и изтриванията, които могат да се коригират от RS-кода е .
Риид-Соломон кодовете са подчинени на BCH кодовете и представляват линеен блок кодове. На фиг.1.7 показва типична Риид-Соломон кодова дума (тя е известна като Системен код, защото данните в ляво са непроменени и еднаквостта на символите е приложена):
Фиг. 1.7. Риид-Соломон кодова дума
На фиг.1.8а е показана MPEG-2 рамката на транспортния поток преди RS кодирането – нейната продължителност е 188 байта (4 байта за флаг, от които един за синхронизация на рамката и 184 информационни байта). След RS кодирането към пакета се добававят 16 допълнителни байта за проверка на четност и съответно продължителността на пакета става 204 байта (фиг.1.8б).
1.5. Риид-Соломон декодиране
Кодираното съобщение в систематична форма, използващ (7, 3) RS код, определя полинома на кодовата дума, описан чрез уравнение (1.7).
(1.7)
Ако по време на предаване на тази кодова дума става, така че два символа са получени по погрешка, то тогава образецът за грешка , може да бъде описан в форма на полином, както следва:
(1.8)
С други думи едно равенство от символи е било сгрешено с 1 бит грешка и един символ са били развалени с 3-битова грешка. Приетата сгрешена кодова дума на полинома , е представена от сумата от предадени кодови думи на полинома и полинома на образеца на грешката, както следва:
(1.9)
Ако се замести уравнение (1.7) и от уравнение (1.8) в (1.9), то за , се получава:
(1.10)
В този пример, има две местоположения на грешката и две стойности на грешката от четири неизвестни. Тъй като има четири неизвестни в този пример трябва да има и четири уравнения, необходими за тяхното решение.
1.6. Разпределение на грешките във времето (Спирално преподреждане на Forney)
Целта на тази стъпка е да се увеличи ефективността от кодирането Риид-Соломон чрез разпределение върху един по-дълъг период от време на пакетите от грешки, въведени от канала, които в противен случай биха надхвърлили коригиращия капацитет на RS кодирането (осем байта за пакет).
L е дължината на пакета, който трябва да се защити и I е броят на разклоненията в преразпределящото и възобновяващото устройства, наречени дълбочина на преподреждането (interleaving depth). Устройството за преразпределяне (в предаващата страна) се състои от превключваема банка от 12 FIFO буфери (индекси j от 0 до 11) с дължина М х j (където М=L/I=204/12=17) и устройство за възстановяване на преподреждането (на приемащата страна), което се състои от същата превключваема банка, но от FIFO буфери с дължина М х (11-j). Следователно, 12 последователни байта с индекси j от 0 до 11 ще преминат през разклонението на съответстващия индекс и всеки байт ще закъснее във времето в зависимост от своя индекс с 0, 17, 34, … 187 позиции (една позиция е равна на периода на един байт).
В приемника се извършва същият процес и байт, който е закъснял във времето с j x 17 позиции в предавателя, тук ще закъснее с (11- j) x 17 позиции. Следователно, всички байтове от пакета ще закъснеят еднакво във времето на (j + 11 + j) x 17=11 x 17=187 позиции и първоначалният ред на тези байтове ще бъде възобновен. Ако във физическия канал се появи група от грешки и те засегнат следващи един след друг байтове, възстановяващото устройство ще ги разпредели във времето върху повече последователни пакети, което ще подобри ефективността на RS кодирането и в повечето случаи ще позволи тяхното пълно коригиране. Синхронизационният байт винаги следва разклонението по индекс j=0.
До този момент процесът на прогресивна корекция на грешки, беше еднакъв за всички радиочестотни предавателни среди, предвидени с стандарта DVB (сателит, кабел, наземна телевизия). Ако ще се използва кабелно разпространение на програмите, единствената оставаща стъпка преди филтрирането и модулацията е преобразуването на серийния поток от данни в два сигнала I и Q от по 3 бита всеки, които ще представят символи от по 6 бита. Тази чисто логическа операция, се нарича съставяне на план на символите.
За сателитни и наземни предавания кодирането на канала изисква една допълнителна стъпка, която цели да коригира в максимална степен случайните грешки, дължащи се на по-лошото съотношение сигнал/шум. Тази стъпка наречена спирално кодиране, е допълнително добавена корекция на грешките към тези, осъществени чрез спиралното преподреждане на Forney и Reed-Solomon кодирането.
Целта е да се осигури на изхода на демодулатора на QPSK ниво на допустимите грешки от порядъка на и на входа на Reed-Solomon декодера, което в крайна сметка ще гарантира един квази чист от грешки канал (BER след RS декодиране от порядъка на до ).
No related posts.
В този блог за уеб дизайн можете да намерите много полезна информация ако сте решили да се занимавате с уеб дизайн и програмиране. Също така ще може да срещнете и статии за SEO (search engine optimization) оптимизация. Надяваме се блога да ви допадне и да станете редовни читатли.
2 Responses to За кодирането
Ольга
April 6th, 2010 at 02:15
Спасибо…
Незнаю…
Валентин
April 9th, 2010 at 04:25
Спасибо…
Хм..…