ИННОВАЦИИ БИЗНЕСУ

ПОДРОБНАЯ ИНФОРМАЦИЯ

Заявку на получение дополнительной информации по этому проекту можно заполнить здесь.

Номер

19-036-04

Наименование проекта

Самосинхронизирующийся последовательный счётный код переменной длины

Назначение

Передача цифровых данных через канал связи.

Рекомендуемая область применения

Программно-аппаратные средства компрессии данных в канале связи.

Описание

Результат выполнения научно-исследовательской работы.

1. Общая характеристика.

Код строится на основе трёхсимвольного алфавита, включающего два бита данных и абстрактный символ - разделитель кодов. Коды основной и модифицированной схем кодирования имеют следующие длины кодовых слов

(1)

- для основной схемы, и

(2)

- для модифицированной. Оба кода при ошибках в канале связи самосинхронизируются с ошибкой передачи не более трёх следующих кодовых слов. Модифицированный код имеет меньшую оценку избыточности . Распределение длин кодов (1) и (2) иллюстрируется таблицей 1.

Средние длины кодов (1) и (2) битах. Таблица 1.

Код 1

Код 2

Код 1

Код 2

Код1

Код 2

0

3

3

12

6

7,5

62

10,5

10,5

1

3

3

13

6

7,5

63

10,5

10,5

2

4,5

4,5

14

7,5

7,5

64

12

10,5

3

4,5

4,5

15

7,5

7,5

4

4,5

6

16

7,5

9

125

12

10,5

5

4,5

6

126

12

12

6

6

6

29

9

7,5

127

12

12

7

6

6

30

9

9

128

13,5

12

8

6

7,5

31

9

9

9

6

7,5

32

10,5

9

253

13,5

12

10

6

7,5

254

13,5

13,5

11

6

7,5

61

10,5

9

255

13,5

13,5

12

6

7,5

62

10,5

10,5

256

15

13,5

Из неё видно, что длина кодового слова (2) всегда не превосходит длины соответствующего слова (1).

2. Структура кода.

Обозначим для простоты символы двоичного алфавита 0, 1 и разделитель через А, Б и С, соответственно. В тексте, состоящем из этих символов, могут встречаться всего три пары соседствующих различных символов: А и Б, Б и С, А и С. Обозначим эти пары через 01, 10, 11, соответственно. Порядок их следования в паре будем обозначать следующим за кодом двоичным нулем или единицей. Прямой порядок битом 0, обратный - 1. Таким образом, АБ получит код 010, а БА - 011; БС - 100, СБ - 101; АС - 110, СА - 111. Пару повторяющихся символов обозначим кодом 00, вслед за которым поместим код символа из этой пары: 0 - для А и 1 для Б. Комбинация из двух С запрещена, так как пара следующих подряд разделителей никогда не встречаются. Таким образом получаем простую систему трёхбитовых обозначений для возможных сочетаний букв из введенной выше троичной системы обозначений. Ниже приведены таблицы преобразования для кодера и декодера.

consttableto:array[0..2]ofarray[0..2]ofinteger=(($00, $01, $03),

($05, $04, $02),

($07, $06, $ff));

consttablefrom: array[0..7] of array[0..1] of integer=

((0,0),(0,1),(1,2),(0,2),

(1,1),(1,0),(2,1),(2,0));

При кодировании с их помощью следует учесть, что общее число троичных символов текста может оказаться нечетным. Поэтому, для корректного завершения вывода текста, код его последнего байта следует «закрыть» символом разделителя. Если для формирования битовой пары разделителя не останется значащего бита текста, то он искусственно дополняется одним нулевым битом.

2.Алгоритмы кодирования и декодирования.

Алгоритм (1) 'thrown' кодирования.

procedureencode;

(* algorithm to throwing away the leading zeroes from each byte of text by use at first the ternary digits to naming at once the both bit's counterparts and delimiter which needs us to separate between the different bytes of text after deleting their higher "useless" zero's bits and at last to coding each of pairs of the mentioned up neighbouring ternary digits with the fixed length 3-bit's binary code.*)

(* copyrights (c) yuri a. gadzhiev, 2004, all rights reserved.*)

varc,carrybitvalue: integer;

carry: boolean;

begin

carry :=false; carrybitvalue :=0;

whilenot eoi do begin

c :=get;

repeat

if carry then outbits(tableto[carrybitvalue, c and 1],3)

else carrybitvalue :=c and 1;

carry :=not carry;

c := c shr 1

until c =0;

if carry then outbits(tableto[carrybitvalue, 2],3)

else carrybitvalue :=2;

carry :=not carry

end;

if carry then outbits (tableto[carrybitvalue, 0],3);

outbits (0,7);

end;

Алгоритм(1) 'thrown' декодирования.

proceduredecode;

varc,d,bits,i,b,k: integer;

begin

bits :=0; c :=0; d :=0; k :=0;

while not eoi do begin

c :=(get shl bits) or c;

bits :=bits+8;

repeat

for i :=0 to 1 do begin

b :=tablefrom[c and $07][i];

if b =2 then begin

put(d);

d :=0; k :=0 end

else begin

d :=d or (b shl k);

k :=k+1

end

end;

c :=c shr 3;

bits :=bits-3

until bits<>

end

end;

Мы можем заметить, что все коды (1), кроме нулевого, имеют единичный старший бит. В целях экономии его можно присоединить к разделителю. Однако в этом случае при появлении одноразрядных чисел 0 и 1 придется как то обозначить несколько следующих подряд разделителей. Избавиться от одноразрядных чисел перед кодированием можно простым увеличением значения каждого исходного числа на 2. Как видно из приведенной ниже модификации алгоритма, изменению в них подверглась лишь одна строка - та которая выделена подчеркиванием.

Алгоритм (2) 'thrown' кодирования (модифицированный).

procedureencode;

... ... ...... ... ...

whilenot eoi do begin

c :=get+2;

repeat

... ... ...... ... ...

outbits(0,7);

end;

Алгоритм (2) 'thrown' декодирования (модифицированный).

proceduredecode;

... ... ...... ... ...

if b =2 then begin

put((d or (1 shl k)) - 2);

d:=0;k:=0end

... ... ...... ... ...

end;

Длина кода после модификации не будет включать старшую единицу. Коды одноразрядных чисел 0, 1 будут содержать один бит (кодируется младший бит двоичных чисел 10,11), числа 2, 3, 4, 5 после увеличения на 2 имеют коды 100,101,110,111 и таким образом будут кодироваться двумя битами. Вообще, подлежащее кодированию количество разрядов будет равно числу значащих разрядов двоичного числа полученного из значения кода после увеличения его на два, минус единица. Таким образом, длина модифицированного кода будет определяться соотношением (2).

Преимущества перед известными аналогами

Свойство самосинхронизации после ошибок в канале связи. Высокая вычислительная эффективность процедур кодирования и декодирования.

Стадия освоения

Внедрено в производство

Результаты испытаний

Соответствует технической характеристике изделия (устройства)

Технико-экономический эффект

Повышение надёжности передачи данных в канале связи на 60%.

Возможность передачи за рубеж

Возможна передача за рубеж

Дата поступления материала

23.09.2004

Инновации и люди

У павильонов Уральской выставки «ИННОВАЦИИ 2010» (г. Екатеринбург, 2010 г.)

Мероприятия на выставке "Инновации и инвестиции - 2008" (Югра, 2008 г.)

Открытие выставки "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)

Демонстрация разработок на выставке "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)