Питер Мартинез, G3PLX (ноябрь 1998 г.)
Автор активно работал на RTTY начиная с 60-х годов прошлого века и участвовал во внедрении AMTOR в радиолюбительскую практику в конце 70-х. Этот вид связи улучшил надежность коротковолнового канала связи и послужил основанием для дальнейшего достижений, которые увели эту разновидность радиолюбительского хобби в сторону передачи данных, обработки сообщений и компьютерной связи. В то же самое время все остальное радиолюбительство основано на двусторонних контактах между операторами.
Таким образом в настоящее время образовался ничем не заполненный разрыв между энтузиастами передачи данных и поклонниками двусторонних непосредственных контактов, до сих пор использующих традиционный вид связи - RTTY, хотя и основанный на использовании компьютеров, а не радиотелетайпов.
В этой статье обсуждаются особенности "живого" контакта в эфире и описывается режим PSK31, разработанный мной специально для проведения "живых" QSO. Этот вид связи основан на использовании дешевых плат DSP и может стать еще более дешевым по мере освоения радиолюбителями искусства работы со звуковыми PC-картами.
ЧТО НУЖНО ДЛЯ НЕПОСРЕДСТВЕННОГО ОБЩЕНИЯ?
Я уверен, что именно процедура исправления ошибок, используемая в модемных режимах передачи данных, делает эти режимы непригодными для живого общения. Можно выделить несколько факторов. Первый связан с тем, что система коррекции ошибок привносит временную задержку в канал связи. В случае работы на AMTOR или PACTOR имеется фиксированный цикл в 450мсек или 1.25 сек или даже еще больше, на который обязательно будет задержано каждое нажатие на клавиатуре (если при передачи возникнут ошибки, задержка будет еще больше). При использовании систем FEC () задержка также неизбежна, так как передаваемая информация "размазана" во времени. При проведении двусторонней связи задержка удваивается. Мне кажется, что именно эта задержка во времени делает двустороннюю связь неприятной для операторов.
Вообще, именно "человеческий фактор" играет основную роль. Вторая причина связана с законом, по которому достоверность передаваемой информации меняется в зависимости от качества канала связи. В аналоговых видах связи (например, CW или SSB) этот закон имеет линейный характер. Операторы знают об этом и подсознательно постоянно учитывают при проведении связи: меняется скорость произнесения слов и интонации голоса. Даже тема беседы может меняться в зависимости от условий в эфире. При проведении цифровой связи зависимость между количеством ошибок на экране и отношением сигнал/шум не такая гладкая. Современные режимы с коррекцией ошибок особенно чувствительны к соотношению сигнал/шум - пока это соотношение достаточно велико передача практически лишена ошибок и совершенно прекращается, как только соотношение сигнал/шум падает ниже некоторого порогового значения. Эта особенность цифровых видов связи очень сильно мешает равномерному течению беседы.
Третья причина социальная: при использовании режимов с коррекцией ошибок вы можете работать только с одной станцией в каждый момент времени. Это неизбежно приводит к сужению круга "беседующих" и создает тенденцию к ограничению контактов только ближайшими друзьями.
Все эти причины заставили меня предположить, что для осуществления непосредственных контактов нужна система передачи данных, НЕ основанная на коррекции ошибок. Устойчивая популярность RTTY подтверждает это предположение: задержка передачи минимальна (150 мсек), течение беседы непрерывно, количество ошибок терпимо. За разговором легко наблюдать и к нему легко присоединиться!
Как можно улучшить RTTY?
Как же с помощью модемных технологий недоступных в 60-х годах улучшить традиционный RTTY? Для начала, так как мы говорим о непосредственном общении, отметим, что нет нужды обсуждать любые системы, передающие текст быстрее, чем его может набирать на клавиатуре человек. Во вторых, так как современные трансиверы гораздо стабильнее, чем трансиверы 60-х годов, мы можем использовать гораздо более узкую полосу частот. В третьих, цифровые процессоры обладают гораздо большей производительностью, чем механика традиционных телетайпных аппаратов. Терпимая к дрейфу частоты частотная манипуляция и пятибитовая кодировка со стартовым и стоповым битами являются следствием ограниченности технологии, существовавшей 30 лет назад. Сейчас можно все сделать гораздо лучше.
Варикодный алфавит PSK31.
Метод, который я применил для того, чтобы улучшить традиционную старт-стоповую кодировку (не вводя задержек, связанных с дополнительными процессами коррекции ошибок и синхронизации) основан на другой традиционной кодировке - коде Морзе. Код Морзе весьма эффективен в смысле средней длительности символа, так как в нем для наиболее часто встречающихся символов используются самые короткие кодировки. Вдобавок код Морзе можно назвать самосинхронизирующимя: нам не надо ничего дополнительного для того, чтобы узнать где кончается один символ и начинается другой. Это значит, что код Морзе не страдает от "эффекта каскадирования ошибок", который возникает, когда стартовый или стоповый биты искажаются во время приема. Дело в том, что кодировка, используемая для обозначения интервала между символами, не может встретиться внутри символа ни при каких условиях.
Кодировка, которую я предлагаю, является логическим развитием кода Морзе. Если в коде Морзе используются элементы, имеющие длину либо 1, либо 3 бита (точки и тире соответственно), то в предлагаемой кодировке длина может быть произвольной. Промежуток между символами можно уменьшить до двух бит. Если условиться, что нажатию ключа соответствует бит "1", а отпусканию - бит "0", то самый короткий код, это просто бит "1". Следующий - "11", затем "101", "1011", "1101", "1111", но не "1001", так как два нуля подряд означают промежуток между символами. Вооружившись карандашом и бумагой нетрудно за несколько минут получить необходимое количество кодировок. Полный набор кодировок для 128 символов ASCII укладывается в кодировки длиной до 10 бит.
Я проанализировал большое количество текстов на английском языке с целью выяснить частоту повторения отдельных букв. Результат приведен в приложении и я назвал его Варикодным алфавитом. Для англоязычных текстов средняя длина символа (учитывая промежуток между буквами "00") составляет 6.5 бит на один символ. Имитирую случайно возникающие при приеме ошибки и подсчитывая число "поврежденных" символов я убедился, что Варикод на 50% лучше, чем старт-стоповая кодировка. Это означает, свойство самосинхронизации работает хорошо.
Наиболее коротким кодом в азбуке Морзе является код буквы "E", а в врикодном алфавите наиболее короткий код отдан пробелу. Если передавать нечего, то передается сплошная цепочка нулей. На рис. 1 приведено сравнение оного и того же слова в ASCII, RTTY, Морзе и Варикоде.
Модуляция и демодуляция PSK31
Для передачи Варикода с разумной скоростью около 50 слов в минуту нужно обеспечить скорость потока битов около 32 бит/сек. Я выбрал 31.25 бит/сек, так как эта скорость может быть легко получена из стандартной скорости семплирования звуковых карт, равной 8000 замеров в секунду. Теоретически для передачи такого потока достаточна полоса частот в 31.25 Гц. Необходимой для этого стабильностью частоты обладают практически все современные КВ-трансиверы.
Выбранный тип модуляции был (насколько я знаю) впервые использован на коротковолновых диапазонах радиолюбителем SP9VRC. Вместо того, чтобы использовать сдвиг частоты (ухудшается ширина спектра излучения) или включение - выключение частоты (ухудшается средняя излучаемая мощность) элементы кодировки передаются с помощью изменения фазы излучаемого сигнала на противоположную. Такой тип модуляции эквивалентен переключению проводов фидера антенны. Эффективность передачи возрастает, так как мы сравниваем положительный сигнал перед изменением фазы с отрицательным сигналом после изменения фазы, а не наличие сигнала (во время "точки") с его отсутствием (во время "паузы"). Но если переключать фазу с такой скоростью (31.25 раз в секунду), то будут генерироваться мощные щелчки, которые придется отфильтровывать.
Если сигнал передатчика, излучающего непрерывную серию точек кода Морзе, пропустить через фильтр, имеющий минимальную необходимую полосу частот, то получится амплитудно-модулированный сигнал с глубиной модуляции 100%. Огибающая этого сигнала будет иметь вид синусоиды, а период этой синусоиды будет равен периоду следования точек. Спектр такого сигнала состоит из центральной несущей и двух боковых полос с амплитудой на 6 dB меньше. Отфильтрованный подобным образом сигнал, фаза которого меняется с тем же периодом на 180 градусов, а амплитуда постоянна, состоит из тех же боковых полос, но без центральной несущей. Это значит, что переход от классической морзянки к фазовой модуляции с поворотом фазы на 180 градусов дает тот же выигрыш, что и переход от АМ-модуляции к DSB-модуляции. Такой вид модуляции принято называть "двоичная манипуляция сдвигом фазы" (Binary Phase-Shift Keying - BPSK). На рисунке 2 показана огибающая сигнала BPSK и детально поворот фазы на 180 градусов.
Чтобы сформировать простейший сигнал BPSK можно преобразовать поток данных в уровни +/- 1 Вольт, пропустить через фильтр нижних частот и подать на балансный модулятор, на другой вход которого подать несущую частоту. Если посылать сигнал, постоянно меняющий на 180 градусов фазу, то это будет выглядеть как поступающая на балансный модулятор синусоида с размахом 1 Вольт. С выхода модулятора мы получим чистый двухтоновый сигнал. Практически используется стандартный SSB-трансивер, а модуляция осуществляется еще на звуковой частоте, или производится эквивалентное преобразование в микросхеме DSP. Можно передавать уровень "0" непрерывной несущей, а уровень "1" - переворотом фазы этой несущей, но я делаю это иначе по причинам, которые вскоре станут всем понятны.
Есть много способов демодуляции BPSK, но все они начинаются с фильтрации сигнала полосовым фильтром. Для той скорости, которую мы выбрали для PSK31, этот фильтр может теоретически иметь полосу 31.25 Гц. Но "прямоугольный" фильтр с такой полосой будет не только дорого стоить в смысле денег, он будет еще вносить очень большую задержку. А мы договорились по возможности избегать задержек! На практике фильтр может иметь двойную ширину полосы пропускания 62.5 Гц (по уровню -50 dB). Задержка у такого фильтра может составлять 64 мсек (длительность двух битов).
Сама демодуляция может быть произведена любым из стандартных методов демодуляции DSB-сигнала, но есть другой способ. Сигнал задерживается на длительность одного бита и сравнивается с незадержанным сигналом на фазовом компараторе. Выход компаратора отрицателен, когда фазы сравниваемых сигналов отличаются на 180 градусов, и положителен, когда фазы совпадают.
Хотя мы можем извлечь информацию из демодулированного сигнала измеряя длительности "точек и тире" точно так же, как мы это делаем ухом при приеме морзянки, в тяжелых (зашумленных) извлечению информации могло бы помочь, если бы мы знали, когда ее ожидать. Данные легко передавать строго выдерживая необходимые длительности, поэтому вполне можно предсказать, когда надо производить замеры выхода демодулятора. Этот процесс обычно называют синхронным приемом, хотя иногда его неправильно называют когерентным приемом. Для того, чтобы синхронизовать приемник и передатчик, мы можем использовать тот факт, что сигнал BPSK имеет амплитудно - модулированный компонент. Хотя модуляция изменяется в зависимости от передаваемой информации,в ней всегда есть чистый тон, соответствующий скорости передачи битов. Его можно выделить с помощью узкополосного фильтра, цепочки ФАПЧ или их DSP-эквивалента, и подать на демодулятор для управления замерами значений выходного сигнала демодулятора. На рис. 3 показаны блок-схемы типичных модулятора и демодулятора BPSK.
Чтобы синхронизация работала устойчиво, не должно быть слишком длинных промежутков между поворотами фазы на 180 градусов. Абсолютно стабильная несущая не имеет модуляции, и мы не сможем предсказать, когда произойдет поворот фазы. К счастью, Варикод - это как раз то, что нам нужно при условии, что нулю будет соответствовать поворот фазы на 180 градусов, а единице - стабильная несущая. В этом случае во время отсутствия передаваемой информации идет поток сплошных нулей, а значит - постоянных поворотов фазы с частотой 31.25 Гц. Во время передачи информации все равно периодически будет происходить поворот фазы, так как между символами должно быть два нуля подряд. Среднее количество поворотов фазы составит 2 на каждые 6.5 бит, в худшем случае перерыв между поворотами составит 10 бит. Если обеспечить выполнение условия, что передача всегда начинается с посылки непрерывного ряда нулей (отсутствие информации), то синхронизация будет достигаться очень быстро. Если же еще заствить трансивер в конце передачи достаточно долго посылать в эфир немодулированную несущую, то можно будет автоматически включать декодирование на принимающей стороне по достаточно длинной последовательности непрерывных поворотов фазы, а выключать по достаточно долгому их отсутствию. Это позволит убрать с экрана "мусор", возникающий в промежутках между передачами из-за шумов эфира.
Как начать работу на PSK31
До сих пор мы занимались философией и теорией, но как выйти в эфир этим видом излучения? В настоящее время начать работать на PSK31 можно только приобретя один из начальных наборов DSP (Digital Signal Processing - цифровая обработка сигналов). Обычно это печатная плата с последовательным портом для подключения к компьютеру. На рынок такие платы выпускаются производителями DSP-процессоров по низкой цене для того, чтобы инженеры и студенты познакомились с программированием DSP. Многие радиолюбители начали писать программное обеспечение для этих плат. Эти программы позволяют работать не только на RTTY но и SSTV, пакетом, через спутники, а также проводить различные эксперименты по цифровой обработке голоса. У этих плат обычно есть также аналоговые и цифровые вход и выход. Конструкторская работа обычно ограничена распайкой кабелей, созданием блока питания и экранированной коробки для платы. Программное обеспечения для этих DSP-плат обычно бесплатно. Точно также бесплатно соответствующее программное обеспечения для PC-компьютеров. Все эти программы легче всего получить через интернет. Безусловно, можно создать аппаратный модем PSK31, но я не знаю пока ни одного человека, который бы занимался этим. Наиболее многообещающим направлением является создание программ, использующих в качестве аппаратной части обычные звуковые PC-карты.
Работа на PSK31
На PSK31 одинаково легко наблюдать за работой других, давать общий вызов, беседовать с одним корреспондентом или участвовать в работе "круглого стола". Ноочень узкая полоса излучения (приема) и хороший прием слабых сигналов означают, что вам придется освоить несколько новых приемов работы. Обычно ручкой трансивера производят только грубую настройку на принимаемый сигнал. Точная подстройка приема производится изменением звуковой рабочей частоты. Для облегчения настройки на частоту корреспондента с точностью до нескольких герц используется индикатор фазового сдвига. При передаче, так как огибающая сигнала (в отличие от сигнала FSK) модулирована по амплитуде, приходится следить за линейностью передающего тракта. К счастью правильную настройку довольно легко осуществить потому, что излучение передатчика в отсутствие полезной информации представляет из себя обычный двухтоновый сигнал. Наихудшие побочные продукты излучения обычно находятся в +/- 45 Гц от частоты настройки и не должны превышать уровня -36 dB относительно несущей.
Во второй части этой статьи будет рассказано, как можно сделать шаг назад и ввести коррекцию ошибок, а также включить в Варикод символы национальных алфавитов.
Приложение: Варикодный алфавит.
ASCII | Варикод | ASCII | Варикод | ASCII | Варикод | ASCII | Варикод |
00 | 1010101011 | пробел | 1 | @ | 1010111101 | ` | 1011011111 |
01 | 1011011011 | ! | 111111111 | A | 1111101 | a | 1011 |
02 | 1011101101 | " | 101011111 | B | 11101011 | b | 1011111 |
03 | 1101110111 | # | 111110101 | C | 10101101 | c | 101111 |
04 | 1011101011 | $ | 111011011 | D | 10110101 | d | 101101 |
05 | 1101011111 | % | 1011010101 | E | 1110111 | e | 11 |
06 | 1011101111 | & | 1010111011 | F | 11011011 | f | 111101 |
07 | 1011111101 | ' | 101111111 | G | 11111101 | g | 1011011 |
08 | 1011111111 | ( | 11111011 | H | 101010101 | h | 101011 |
09 | 11101111 | ) | 11110111 | I | 1111111 | i | 1101 |
0A (LF) | 11101 | * | 101101111 | J | 111111101 | j | 111101011 |
0B | 1101101111 | + | 111011111 | K | 101111101 | k | 10111111 |
0C | 1011011101 | , | 1110101 | L | 11010111 | l | 11011 |
0D (CR) | 11111 | - | 110101 | M | 10111011 | m | 111011 |
0E | 1101110101 | . | 1010111 | N | 11011101 | n | 1111 |
0F | 1110101011 | / | 110101111 | O | 10101011 | o | 111 |
10 | 1011110111 | 0 | 10110111 | P | 11010101 | p | 111111 |
11 | 1011110101 | 1 | 10111101 | Q | 111011101 | q | 110111111 |
12 | 1110101101 | 2 | 11101101 | R | 10101111 | r | 10101 |
13 | 1110101111 | 3 | 11111111 | S | 1101111 | s | 10111 |
14 | 1101011011 | 4 | 101110111 | T | 1101101 | t | 101 |
15 | 1101101011 | 5 | 101011011 | U | 101010111 | u | 110111 |
16 | 1101101101 | 6 | 101101011 | V | 110110101 | v | 1111011 |
17 | 1101010111 | 7 | 110101101 | W | 101011101 | w | 1101011 |
18 | 1101111011 | 8 | 110101011 | X | 101110101 | x | 11011111 |
19 | 1101111101 | 9 | 110110111 | Y | 101111011 | y | 1011101 |
1A | 1110110111 | : | 11110101 | Z | 1010101101 | z | 111010101 |
1B | 1101010101 | ; | 110111101 | [ | 111110111 | { | 1010110111 |
1C | 1101011101 | < | 111101101 | \ | 111101111 | | | 110111011 |
1D | 1110111011 | = | 1010101 | ] | 111111011 | } | 1010110101 |
1E | 1011111011 | > | 111010111 | ^ | 1010111111 | ~ | 1011010111 |
1F | 1101111111 | ? | 1010101111 | _ | 101101101 | 7F | 1110110101 |
Коды передаются, начиная с левого бита. При передаче нуля фаза поворачивается на 180 градусов, а при передаче единицы фаза не меняется. Между символами вставляется минимум два нуля. В некоторых реализациях коды ниже 32 могут не обрабатываться.
Часть 2
В первой части обсуждались требования к клавиатурно-экранной коммуникационной системе, подходящей для непосредственного общения в эфире. В качестве кандидата в современные эквиваленты RTTY в ней была предложена узкополосная PSK31. Этот режим используется на КВ небольшой, но быстро растущей группой энтузиастов уже около двух лет. В этой части статьи я опишу два последних усовершенствования для PSK31.
Второй взгляд на коррекцию ошибок.
После того, как PSK31 стала работать с модуляцией BPSK и варикодным алфавитом, многие люди стали убеждать меня, что надо добавить коррекцию ощибок, так как это, по их мнению, улучшит PSK31 еще больше. Я сопротивлялся этому по причинам, изложенным в части 1, а именно: задержки в передаче, неравномерный ход траффика и невозможность наблюдения за разговором двух корреспондентов делают коррекцию ошибок неприемлемой для непосредственных контактов. Есть и еще одна причина. Все системы коррекции ошибок добавляют избыточные биты данных. Для того, чтобы сохранить скорость передачи полезной информации, я должен буду удвоить поток битов. Но для BPSK это означает удвоение занимаемой полосы частот, следовательно ухудшение на 3 dB соотношения сигнал/шум, следовательно увеличится количество ошибок. Система коррекции должна будет работать вдвое больше только для того, чтобы сохранить прежнюю надежность связи. Выигрыш от применения системы коррекции становится не очевидным! Интересно отметить, что в случае FSK, где занимаемая полоса частот и так велика, битовый поток можно удвоить без увеличения занимаемой полосы частот. Поэтому коррекция ошибок будет давать реальный выигрыш. Компьютерное моделирование показывает, что при высоком отношении сигнал/шум коррекция ошибок делает редкие ошибки в BPSK еще более редкими (очень редкими!), но в реальном эфире при невысоких соотношениях сигнал/шум, гораздо эффективнее медленно передавать необработанные данные по каналу с максимально узкой полосой частот. При этом мы получаем выигрыш и в смысле числа одновременно работающих на 1 КГц и не мешающих друг другу станций.
Тем не менее, было высказано предположение, что коррекция ошибок может оказаться полезной в случае импульсных помех, которые было трудно симитировать на стенде. Поэтому решил попробовать проверить это в некоторых сравнительных тестах. Мне показалось, что технология FEC (Forward Error Correction) может все-таки подойти при условии, что задержка будет не слишком велика.
Я понимал, что сравнивать две системы с различными полосами занимаемых частот, будет трудно. Влияние соседних каналов будет разным, разным будет и влияние многолучевого приема. Однако есть способ увеличить пропускную способность канала BPSK не увеличивая занимаемую им полосу. Добавив на передающей стороне вторую несущую BPSK, сдвинутую по фазе на 90 градусов, а на приемной - второй демодулятор, мы может сделать тот же трюк, который используется для передачи двух цветоразностных сигналов в телевизионных системах PAL или NTSC. Это можно назвать квадратурной манипуляцией обращением полярности, но все называют это четырехуровневой манипуляцией сдвигом фазы или QPSK (Quaternary Phase-Shift Keying).
Платой за это будет уменьшение соотношения сигнал/шум на 3 dB, так как мощность передатчика придется делить между двумя каналами. Это такая же плата, как при удвоении полосы занимаемых частот, поэтому мы не выиграли и не проиграли. Поэтому QPSK идеально подходит для моего планируемого сравнительного эксперимента: влияние соседних каналов, отношение сигнал/шум и устойчивость к многолучевому приему (замирания сигнала) одинаковы в обоих случаях.
В следующем разделе я буду рассматривать QPSK-сигнал не как два отдельных канала бинарной (двоичной) информации, а как один канал, фаза которого может принимать значение 0, 90, 180 или 270 градусов. Кстати, способ синхронизации предложенный для BPSK, годится и в этом случае, так как сигнал QPSK также модулирован по амплитуде с частотой, равной скорости потока битов.
QPSK и конволюционное кодирование.
Имеется море литературы, посвященной коррекции ошибок в информации, разбитой на блоки постоянной длины (например, такие, как коды ASCII) путем передачи этой информации в виде более длинных блоков, но я не видел ни одной статьи, посвященной коррекции ошибок информации, состоящей из блоков переменной длины, например Варикода. Тем не менее, способ уменьшить количество ошибок в такой информации существует. Применение этого способа при передаче информации по радиоканалу тем более естественно, что возникающие ошибки так же не имеют блокой структуры. Эти методы называются конволюционными кодами. Одна из самых простых реализаций удваивает поток битов данных, и поэтому является естественным выбором для применения в QPSK.
Конволюционный кодировщик генерирует одно из четырех возможных значений сдвига фазы не на основе одного очередного бита, а на основании значений нескольких последовательных битов. Это эквивалентно тому, что каждый бит как бы "размыт" во времени, "перемешан" с несколькими предыдущими и последующими битами. Чем больше это "размытие", тем выше способность кодировки исключить влияние всплесков шума. Но слишком большое размытие приведет к большой задержке в передаче. Я выбрал величину "размытия" равной 5 битам. Таблица, определяющая фазовый сдвиг в сигнале в зависимости от значений пяти последовательных битов, приведена в приложении. Закон, по которому была создана эта таблица, в здесь обсуждаться не будет.
В приемнике используется устройство под названием декодер Витерби. Это не столько декодер, сколько целое семейство кодировщиков, "играющих" в игру под названием "Угадай-ка". Каждый делает свое, отличное от других, предположение о том, какими могут быть последние 5 бит. Из 5 бит можно составить 32 комбинации, поэтому в игре принимают участие 32 кодировщика. На каждом шаге кодировщиками предсказывается значение сдвига фазы. Реальное значение сдвига фазы сравнивается с каждым из предсказанных. По результатам сравнения каждому кодировщику выставляется оценка по 10-балльной шкале. 16 худших кодировщиков выбывают из "соревнования", а 16 лучших "проходят в следующий тур" вместе со своей оценкой. Каждый выживший кодировщик превращается в два новых, один из которых предполагает, что следующий бит равен "0", а другой - "1". Оба предсказывают свой сдвиг фазы. Результат сравнивается с новым принятым сдвигом фазы. Всем выставляется оценка (из 10 баллов) и опять худшие 16 отмирают, а лучшие 16 выживают и переходят в следующий тур. И так далее ...
Этот процесс немного похож на эволюционную теорию Дарвина. В конце концов все "наследники" кодировщиков, ранее сделавших правильные предположения, окажутся среди выживших и будут иметь одни и те же "гены предков". Поэтому нам достаточно вести запись "семейного дерева (последовательность предположенных битов) каждого выжившего кодировщика, а затем отследить по этому дереву переданный поток битов. Но для этого придется подождать минимум 5 битов, т.е. до тех пор, пока все выжившие кодировщики не будут иметь одну и ту же "пра- пра- прабабушку" (ту, что сделала предположение 5 битов назад). Именно потому, что вся система основана на накопительном принципе, декодер Витерби всегда дает наиболее точное предположение даже в том случае, когда принятая информация искажена. Хотя, для того, чтобы результат прояснился придется подождать более 5 битов. Другими словами декодер Витерби корректирует ошибки.
Чем дольше мы ждем, тем более точен декодер. Я выбрал задержку декодера равной четырем временам "размазывания", т.е. задержка равна 20 бит. Полная задержка составляет, таким образом, 25 бит (800 мсек), а полная задержка в двустороннем контакте равна 1.6 сек. Думая, что это близко к пределу, которым можно допустить для нормального непосредственного контакта.
QPSK в эфире.
Радиолюбители, работающие PSK31 считают, что QPSK может давать заметное улучшение свзи, но иногда ее применение не дает никакого эффекта. При тестировании белым шумом QPSK оказывается даже хуже, чем BPSK. Но в реальных условиях при наличии замираний и помех, применение QPSK дает уменьшение количества ошибок до пяти раз. Но за все надо платить: появляется заметная задержка, ужесточаются в два раза требования по точности настройки (точность не хуже 4 Гц). Очень важно, чтобы обе стороны использовали одну и ту же боковую полосу (для BPSK это не важно!).
Радиолюбители, работающие PSK31 считают, что QPSK может давать заметное улучшение свзи, но иногда ее применение не дает никакого эффекта. При тестировании белым шумом QPSK оказывается даже хуже, чем BPSK. Но в реальных условиях при наличии замираний и помех, применение QPSK дает уменьшение количества ошибок до пяти раз. Но за все надо платить: появляется заметная задержка, ужесточаются в два раза требования по точности настройки (точность не хуже 4 Гц). Очень важно, чтобы обе стороны использовали одну и ту же боковую полосу (для BPSK это не важно!).
Расширение алфавита
У нас в Англии на клавиатуре над цифрой 3 изображен значок фунта-стерлингов. Многие из вас возможно заметили, что передать этот значок, например через Интернет, не так просто. Происходит это потому, что в Интернете используется ASCII-набор символов (128 символов), а символ фунта-стерлингов в этот набор не входит. Он входит только в ANSI-набор, в котором есть еще 128 символов (расширенный ASCII). До сих пор PSK31 считалось подобным Интернету. Это создает не очень большие неудобства в Англии, но в других странах ситуация гораздо хуже, так как в их национальных алфавитах гораздо больше символов, не входящих в стандартный набор ASCII. Так как Windows использует набор ANSI-символов, а большинство программ написано для WINDOWS, я недавно расширил алфавит PSK31 в версии для WINDOWS.
Очень легко добавить в Варикод еще 128 символов и сохранить совместимость со старыми программами в части, касающейся первых 128 символов. В старых версиях декодировщиков, если группа бит между двумя соседними сочетаниями бит "00" оказывалась длиннее, чем 10 бит, она отбрасывалась. Теперь (в расширенном алфавите) я разрешил передатчику передавать группы бит без "00" длиннее, чем 10 бит. Для того, чтобы закодировать еще 128 символов, придется использовать оставшиеся 10-битовые сочетания, все 11-битовые, и несколько 12-битовых. В этой части алфавита подборка по принципу "чаще встречается - короче по длине" не производилась. Я просто раположил добавочные 128 символов в порядке их кодов. Коду 128 соответствует 1110111101, а коду 255 соответствует 101101011011. Большая часть этих символов не будет никогда использована. Передавать же двоичные файлы с помощью Варикода вообще плохо - длина файлов при такой передаче будет больше исходной!
Итоги
В этой статье я постарался выделить некоторые характеристики современных видов передачи данных на КВ, которые привели к вымиранию "непосредственного общения" операторов на этих видах связи, в то время как традиционное RTTY до сих пор весьма популярно. На основании особенностей непосредственного общения в эфире был предложен новый вариант RTTY-режима, основанный на использовании современных технологий DSP и использующий преимущества высокой стабильности частоты современных КВ-трансиверов. Занимаемая полоса частот намного меньше, чем в любом другом телеграфном режиме. На рисунке 4 показан спектр сигнала PSK31, а на рисунке 5 - его сравнение со спектром стандартного сигнала FSK.
Рис. 4. Красный - излучается последовательность единиц (несущая). Зеленый - излучается последовательность нулей (постоянные повороты фазы). Синий - излучается поток информации.
Рис. 5. Красный - излучается поток информации на PSK31. Синий - излучается поток информации на FSK [Amtor/Pactor] (сдвиг 200 Гц, скорость 100 бод).
К моменту написания статьи (ноябрь 1998 г.) имелось программное обеспечение для работы PSK31 для следующих чипсетов: Texas TMS320C50DSK (написано G0TJZ), Analog Devices ADSP21061 "SHARC" kit (написано DL6IAK) и Motorola DSP56002EVM (написано мной). Для звуковых карт DL9RDZ написал программу, работающую под операционной системой LINUX, а я собираюсь написать программу , работающую под WINDOWS. Имеющиеся в продаже многорежимные контроллеры (две модели) уже модернизированы и работают с PSK31.
В двух приложениях содержится достаточно информации для определения PSK31 для тех, кто хочет попробовать свои силы. С имеющимся программным обеспечением, а также последними новостями и достижениями можно ознакомиться на сайте http://aintel.bi.ehu.es/psk31.html.
Приложение: Коволюционный код. В левой колонке содержатся все 32 комбинации из пяти варикодных бит (левый излучается первым. В правой колонке приведен соответствующий фазовый сдвиг несущей. 0 означает отсутствие фазового сдвига, 1 - сдвиг на +90 градусов, 2 - сдвиг на 180 градусов (изменение полярности), 3 - сдвиг на -90 градусов. Постоянный сдвиг фазы на 90 градусов эквивалентен сдвигу частоты.
5 бит Варикода | сдвиг | 5 бит Варикода | сдвиг | 5 бит Варикода | сдвиг | 5 бит Варикода | сдвиг |
00000 | 2 | 01000 | 0 | 10000 | 1 | 11000 | 3 |
00001 | 1 | 01001 | 3 | 10001 | 2 | 11001 | 0 |
00010 | 3 | 01010 | 1 | 10010 | 0 | 11010 | 2 |
00011 | 0 | 01011 | 2 | 10011 | 3 | 11011 | 1 |
00100 | 3 | 01100 | 1 | 10100 | 0 | 11100 | 2 |
00101 | 0 | 01101 | 2 | 10101 | 3 | 11101 | 1 |
00110 | 2 | 01110 | 0 | 10110 | 1 | 11110 | 3 |
00111 | 1 | 01111 | 3 | 10111 | 2 | 11111 | 0 |
Например, символ "пробел" - бит "1", перед которым (и после которого) передаются нулевые биты, соответствует последовательной обработке пяти групп 00000, 00001, 00010, 00100, 01000, 10000, 00000. Это означает, что будет передана следующая QPSK последовательность .., 2, 1, 3, 3, 0, 1, 2, ..
Замечание: непрерывная передача нулевых битов (режим передачи без передачи информации) приводит к непрерывном изменении фазы на 180 градусов, т.е. в этом случае сигнал эквивалентен BPSK.