Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
А4_Методичка.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

Характеристики і можливості модемів

Більшість сучасних модемів має вбудовані додаткові функції, число яких коливається від 30 до 100. Більшість функцій і можливостей, таких як підтримка декількох методів модуляції, відповідають вимогам існуючих де-факто і де-юре стандартів. Зокрема, всі сучасні модеми, призначені для комутованої телефонної мережі, підтримують стиснення даних і механізм виявлення і виправлення помилок.

Стиснення даних і стандарт V.42bis

В основному застосовується методи: стиск даних (методи LZW і стандарт V.42bis), а також виявлення і виправлення помилок.

Алгоритм lzw

Алгоритм LZW (за першими літерами прізвищ його створювачів) є основою стандарту стиснення V.42bis.

Згідно кодам ASCII, в двійковому представленні з допомогою 8 біт можна закодувати 256 символів, коди яких в десятковому поданні мають значення від 0 до 255. Ці символи (їх коди), спочатку заносяться до словника програми, що реалізує алгоритм LZW. Під час роботи програма посимвольно перебирає рядок, що підлягає стисненню і передачі. При цьому виконується така послідовність дій.

1. Зчитуваний символ додається у формований рядок. Якщо отриманий рядок вже присутній в словнику, перевіряється наступний символ.

2. Якщо отриманого рядка в словнику немає, передається попередній сформований рядок, а нова заноситься до словника.

Отже, зчитувальні символи використовуються для формування відсутності в словнику рядків, довжина яких з кожним виконанням циклу збільшується. Якщо буде виявлено, що такій послідовності символів в словнику ще немає, остання сформована рядок передається на вихід, а новий рядок додається словник ст. Для вказівки положення рядка в таблиці рядків словника в алгоритмі LZW використовується числовий код. Якщо сформований рядок умовно назвати префіксом, а зчитування символ - суфіксом, то роботу алгоритму можна описати таким чином:

префікс + суфікс = новий рядок Після формування нового рядка суфікс стає префіксом:

префікс = суфікс

Для прикладу розглянемо, як алгоритм LZW виконує стиснення рядка а'а'с. Спочатку кожному символу словника призначається числове кодове значення, відповідне десятковому поданню цього символу в кодуванні ASCII. Тобто кодове значення символу а - 97, кодове значення символу '- 98 і т. д.

Відповідно до алгоритму LZW, при першій виконуваній операції (першому циклі) приймається, що префіксом є порожній рядок, що позначимо символом /. Тому при виконанні першої операції першим вважається символ а додається до порожньго рядку, в результаті чого формується новий рядок а. Оскільки а присутня в словнику, на вихід нічого не передається. Далі, згідно з алгоритмом, суфікс стає префіксом - а стає префіксом при формуванні нового рядка (цей етап стиснення рядка ababc відображене в першому рядку табл 3.1).

Наступний крок алгоритму - зчитування і введення другого символу - ', який стає суфіксом. У ході його створення він додається до префікса а, і в результаті утворюється новий рядок AB. Цього рядка немає в словнику програми, тому набуває чинності друге правило, згідно з яким на вихід передається останній сформований рядок а, кодове значення якого - 97, а новий рядок AB додається до словника. Раніше вже говорилося, що для представлення символів в кодуванні ASCII використовуєся 8 біт, що дозволяє працювати з 255 символами. З цього випливає, що новим рядкам можна присвоїти кодові значення, які будуть більше 255 (256 і т. д.) І які у двійковому поданні вимагають більшої кількості бітів. Першопочатковий розмір лексеми, використовуваний для представлення нових рядків, узгоджується модемами під час процесу узгодження, встановлений у відповідно до стандарту V.42bis.

Далі символ Ь, який був суфіксом при формуванні рядка AB, став префіксом для наступної операції (див. третій рядок табл.3.1). Далі зчитується наступний символ - а, який тут же використовується як суфікс при створенні нового рядка Ьа. Оскільки цього рядка немає в словнику, на вихід передається попередній рядок з числа ще не зданих, виданню, кодове значення якої - 98. Зауважимо, що сформований перед цим рядок AB був доданий до словника, а не відправлений на вихід. При додаванні в словник рядка Ьа йому присвоюється наступний код - 257, а символ а, який був суфіксом при формуванні цього рядка, при виконанні наступної операції стає префіксом, (див. четвертий рядок табл. 3.1). Потім зчитується черговий (четвертий) символ рядка введення - ', при додаванні якого як суфікса до попереднього рядка (а) утворюється новий рядок AB. Однак оскільки він вже був доданий в таблицю рядків (словник), на вихід нічого не передається, а сам рядок стає префіксом при створенні наступного рядка.

Даний етап процесу стиснення відображений у п'ятому рядку табл. 4,2: сформований на попередньому етапі рядок AB, який раніше був занесений в таблицю рядків, став префіксом при створенні наступного рядка, а останній символ став суфіксом. Отриманий новий рядок ABC відсутній у словнику, тому на вихід передається останній сформований і не переданий рядок - А.Б., точніше, передається присвоєне йому кодове значення - 256. Символ із стає префіксом для створюваної чергового рядка, але так як він є останнім символом рядка введення, його кодове значення (99) передається на вихід.

Таблиця 3.1. Стиснення строки ababc відповідно до алгоритму LZW

Префікс

Суфікс

Нова строка

Вихід

f

А

А

—

а

В

ab

97

b

А

Ьа

98

а

В

ab

—

ab

С

abc

256

с

F

с

99