ПРОГРАММА DSPFil

Игорь Гончаренко (DL2KQ-EU1TT, dl2kg@qsl.net)


Не вызывает сомнений, что в современном трансивере необходима цифровая обработка сигнала - DSP (digital signal processing). Ее используют почти во всех фирменных аппаратах. Цифровая фильтрация существенно улучшает условия приема в тяжелой помеховой обстановке. В статье рассказано, как осуществить цифровую фильтрацию, используя персональный компьютер со звуковой картой.

Принцип DSP - превратить аналоговый сигнал, подлежащий фильтрации, с помощью АЦП в поток данных, и по специальным алгоритмам цифровой фильтрации произвести его обработку. Затем, подав обработанный сигнал на ЦАП, выполнить обратное преобразование сигнала в аналоговый, но уже не содержащий ненужных нам частотных составляющих. DSP позволяет создать фильтр с практически любой мыслимой АЧХ, быстро изменить его тип и параметры, обеспечить стабильность характеристик, корреляционную обработку, недоступные аналоговым фильтрам.

Ну, а как быть большинству радиолюбителей СНГ, использующих самодельную или доработанную военную аппаратуру? В домашних условиях сделать похожее аналоговое устройство практически невозможно. Набор обычных фильтров трудоемок в изготовлении и не обеспечит всех возможностей DSP. Но зачем что-то паять, когда у многих рядом с трансивером стоит уже готовое устройство для цифровой обработки сигналов - компьютер со звуковой картой. Достаточно подать на линейный вход звуковой карты сигнал НЧ с выхода трансивера, загрузить программу DSP-фильтрации и на выходе звуковой карты слушать отфильтрованный сигнал.

В данной статье описывается бесплатная программа DSPFil для цифровой фильтрации. Английская версия DSPFil написана Makoto Mori, JE3HHT и лежит на сайте <ftp://plaza27.mbn.or.jp/~je3hht/>. Автор этих строк сделал русскую версию DSPFilrus, которая свободно выложена на сайте <ftp://ftp2.paguo.ru/pub/2001/11/dspfil>

(объем в zip'e - около 200 кБ). DSPFil имеет развитый сервис, множество готовых фильтров (в том числе и корреляционные), окно проектирования, в котором можно самостоятельно создать различные типы фильтров по собственным требованиям.

DSPFil превосходит по своим возможностям известные программы цифровой фильтрации. Например, бесплатная программа YVF представляет собой, по сути дела, только многополосный эквалайзер. А сравнимый по параметрам DSP blaster K6STI требует оплаты, имеет убогий DOS'oвcкий интерфейс, работает только в полноэкранном режиме (т. е. реально, кроме приема, компьютер ничем занять нельзя, при переключении в другое окно он останавливает обработку), имеет очень ограниченные возможности настройки параметров фильтров, а также очень критичен к звуковой карте - работает далеко не со всеми.

Требования к компьютеру 
	ОС: Windows 95, 98, NT 
	Компьютер: 486-й 25МГц или выше (быстрее - лучше). 
	исплей: Разрешение 640х480 или больше 
	Звуковая карта: 16-разрядная звуковая карта, с полным дуплексом 
	(платы без FULL-DUPLEX работать не будут). 

Установка и удаление

Просто распакуйте файл DSPFilrus.zip в созданную для него директорию (с любым именем) и запустите DSPFilrus.exe. Программа не создает ярлыка на рабочем столе, при желании его можно создать самостоятельно (иконка есть в каталоге программы) средствами Windows. DSPFil ничего не добавляет к системному реестру Windows, так что для деинсталяции достаточно просто удалить директорию программы, даже не перезагружая компьютер.

Подключение и запуск

Подключите выход НЧ сигнала трансивера (если есть, лучше использовать линейный выход, на котором сигнал не регулируется ручкой "Усиление НЧ") к линейному входу звуковой карты. Если вдруг сигнал НЧ с вашего трансивера очень мал (хотя, по-моему, необходимые для линейного входа 100...200 мВ даст любой трансивер), можно подать сигнал и на микрофонный вход звуковой карты, но это хуже - больше шумов и наводок. Подключите телефоны или громкоговоритель к выходу звуковой платы.

Чтобы слышать только сигнал, обработанный DSPFil, и не слышать прямого прохождения сигнала с линейного входа на выход звуковой карты, в Wlndows"oвcкoй панели управления громкостью поставьте птичку в окошке выключения линейного входа.

Все готово к старту - запускайте программу. Если слышно звук эфира на выходе звуковой карты, можно работать. А если при запуске DSPFiI.exe появляется сообщение "Не могу открыть саундкарту!", то или ваша звуковая карта в данный момент занята другой программой (ее надо закрыть), или же она не поддерживает дуплексный режим и DSPFil на ней, увы, не пойдет. Кстати, многие другие радиолюбительские программы для цифровых видов связи, работающие через звуковую карту, такие как MMTTY MMSSTV, Digipan, HamScope (я перечислил только наиболее распространенные и бесплатные программы), тоже не пойдут на такой карте, поэтому имеет смысл ее заменить.

Основное окно программы

Puc.1 Вид этого окна показан на рис. 1. Продолжим настройку программы. Если звук эфира, который вы слышите, прерывается паузами и на индикаторе появляется надпись "Мало", это означает, что при данном быстродействии компьютера установлен слишком малый объем буфера программы для работы в режиме реального времени. Из меню выбора правее надписи "Буфер" установите большее значение (но это увеличивает задержку сигнала на выходе). Надо "поймать" минимальное значение этого параметра, при котором звук на выходе еще не начинает "рваться".

Скорректируйте уровень сигнала на входе, используя средства Windows - панель аудиоконтроля (то же самое можно делать и в самой программе DSPFilrus кнопками "Сиг+" и "Сиг-") или используя регулировку уровня в трансивере. Слишком высокий уровень вызывает искажения в аналоговой части звуковой платы, а на индикаторе программы появляется сообщение "Перегрузка". Отрегулируйте уровень сигнала таким образом: найдите наиболее громкую станцию и добейтесь появления сообщения "Перегрузка", а затем немного убавьте уровень сигнала.

Вверху экрана, кроме уже упомянутых, имеются следующие элементы:

• Кнопка "ОБ" - обход сигнала, минуя DSPFil. Полезна для оценки эффекта от работы программы - нажав эту кнопку, послушайте необработанный сигнал.

• Меню выбора "Fo-..Гц" -для выбора центральной частоты фильтра. Ее значение можно выбрать из списка или ввести вручную.

• Меню выбора "О" - для установки добротности фильтра. Максимальное ее значение зависит от производительности компьютера. Увеличение Q дает более крутые скаты АЧХ, но одновременно возрастает время обработки сигнала (запаздывание).

• Кнопка "Вход по переменному току" - включает закрытый (по переменному току) вход звуковой карты. Это полезно в том случае, если ваш трансивер выдает паразитные низкочастотные составляющие (фон 50 Гц, например) или имеет на выходе постоянное напряжение, отличное от нуля. Имейте в виду, это выполняется программно и увеличивает загрузку процессора, поэтому лучше иметь сигнал с трансивера без постоянного смещения и фона, для чего достаточно обычного разделительного конденсатора.

• Два окна управления индикатором спектра. Окно "Показ" позволяет выбрать, что именно показать на индикаторе - ничего, входной или выходной сигнал. В окне "Полоса" устанавливают полосу обзора индикатора.

•Окно внизу справа показывает АЧХ включенного в данный момент фильтра.

Готовые фильтры

В левой части окна расположены кнопки включения уже установленных фильтров. Чтобы детально рассмотреть АЧХ и характеристики любого из этих фильтров, достаточно нажать кнопку желаемого фильтра и затем кнопку "Хар". В открывшемся окне видно увеличенную АЧХ и подробные характеристики выбранного фильтра.

Греб 1 - Греб 6. Это - шесть разных гребенчатых фильтров. Гребенчатый фильтр представляет собой несколько параллельно включенных полосовых фильтров с одинаковой полосой, но разными центральными частотами. Результирующая АЧХ напоминает гребенку с зубьями, откуда и пошло название фильтра. Фактически берется полосовой фильтр на частоту Fo (например, 500 Гц) и полосой f, и его АЧХ циклически повторяется на нечетнократных частотах (в нашем примере FoX3 = 1,5 кГц, FoX5 = 2,5 кГц, FoX7 = 3,5 кГц и т. д.). Между максимумами АЧХ затухание фильтра задается величиной А.

Как установить параметры гребенчатого фильтра? Частота Fo задается в окошке вверху "Fo", т. е. мы можем устанавливать ее какой необходимо. Полоса f фиксирована и дискретно уменьшается от f = 1/ЗFo в фильтре "Греб 1 " до f = 1/10Fo в фильтре "Греб б". Заметим, что в фильтрах "Греб 1-3" затухание между горбами АЧХ составляет 20 дБ, а в фильтрах "Греб 4-6" - 40 дБ.

Гребенчатые фильтры применяются для приема SSB сигналов в условиях, когда другой мешающий SSB сигнал расположен точно на частоте полезного. В таких случаях все другие типы фильтров бесполезны. Полезный эффект основывается на том, что энергия SSB сигнала распределена не равномерно, а в зависимости от особенностей конкретного голоса сконцентрирована в относительно нешироких участках спектра. Крайне маловероятно, чтобы мешающий сигнал имел бы такое же спектральное распределение. Поэтому при удачном подборе параметров гребенчатого фильтра (совпадении его максимумов АЧХ с областями, в которых сосредоточена большая часть энергии полезного SSB сигнала) можно заметно улучшить отношение сигнал/помеха.

Более того, многие типы фирменных трансиверов имеют функцию формирования АЧХ звукового тракта передачи именно гребенчатым фильтром, производя характерный, "пронзительный" SSB сигнал, применяемый в тестах и pile-up'ax. И при приеме такого сигнала гребенчатый фильтр дает очень солидный выигрыш. При включении гребенчатого фильтра громкость сигнала падает, поскольку он пропускает только часть энергии полезного сигнала. Как правило, более практичными являются фильтры "Греб 1-3" с небольшим (20 дБ) затуханием, позволяющие немного слышать, что же происходит между полосами пропускания фильтра.

Конечно, используя такой тип фильтров, придется потрудиться, подбирая вручную оптимальную частоту Fo и переключая фильтры "Греб 1-6", выбирая наилучшие для данного сигнала полосы и затухание между полосами, но игра стоит свеч! Повторю, это единственный тип фильтра, способный что-то сделать, когда мешающий SSB сигнал совпадает с полезным по частоте и амплитуде.

Другим полезным качеством этого типа фильтров является подавление второй гармоники, поэтому применение гребенчатого фильтра может повысить разборчивость одиночного "перекачанного" SSB сигнала.

500 Гц - 70 Гц. Это - обычные полосовые фильтры для CW с выбираемой кнопкой полосой пропускания. Для минимизации "звона" и затягивания фронтов на импульсных телеграфных сигналах в этих фильтрах использован алгоритм FIR (конечного импульсного отклика), обеспечивающий минимальные фазовые искажения. В качестве центральной частоты и добротности этих фильтров используются параметры, установленные ранее в меню выбора "Fo" и "Q". Затухание за полосой пропускания этой группы фильтров - 60 дБ. Для получения максимальной крутизны скатов рекомендуется выставлять наибольшее значение Q, которое "вытягивает" ваш компьютер. Но слишком большая величина Q увеличивает время обработки сигнала (задержку). Разумным компромиссом является диапазон Q=100..256.

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

2,7 кГц - 1,8 кГц. Это фиксированные полосовые фильтры для SSB с верхней частотой среза, выбираемой кнопкой. Для всех фильтров этой группы затухание за полосой пропускания - 60 дБ, нижняя частота среза - 200 Гц. Установка "Fo" не влияет на параметры этих фильтров. Они хорошо подрезают "хвосты" от соседних по частоте станций.

Группа корреляционных фильтров

Сюда входят фильтры, параметры которых динамически меняются в соответствии с принимаемым сигналом. Принцип их работы основан на том, что принимаемые сигналы являются в какой-то степени регулярными, а шумы - случайными. Входной сигнал проходит через линию задержки с отводами, и с этих отводов сигналы перемножаются и сравниваются. Естественно, что регулярный (имеющий высокую корреляцию) полезный сигнал при этом возрастает в большей степени, чем случайные (не имеющие корреляции) шумы. Математический алгоритм обработки называется методом наименьших квадратов (least-mean-square или LMS) и весьма сложен. Результатом обработки является заметное возрастание отношения сигнал/шум, что очень полезно при приеме слабых, зашумленных сигналов.

На параметры этой группы фильтров не влияют установки "Fo" и "Q". На диаграмме в правом нижнем углу можно видеть, как динамически меняется АЧХ, адаптируясь к принимаемому сигналу. Применение этой группы фильтров полезно, когда мешающий сигнал некоррелирован (шум). Использование же таких фильтров при мощных коррелированных помехах (другая станция) может дать отрицательный эффект - фильтр потеряет нужный сигнал и захватится помехой. Он же не знает, что именно вы слушаете, его задача вытягивать коррелированные сигналы - hi.

Кор CW1. Это узкий и медленный (с невысокой скоростью изменения АЧХ) корреляционный фильтр для телеграфа. Хорошо подходит для "вытягивания" одиночного слабого сигнала, "подплывающего" по частоте или "дрожащего" от полярного эха.

Кор CW2. Более широкий и быстрый фильтр. Он не вырезает "по бокам" все полностью, оставляя возможность обзорного контроля. Кроме того, в отличие от предыдущего, имеет встроенную АРУ. Без АРУ в случае совсем слабых сигналов фильтр перестает понимать, к чему именно он должен адаптироваться (сигнал-то пропал!), что приводит к снижению уровня выходного сигнала. Данный фильтр хорошо "вытягивает" и сигналы с глубокими и быстрыми QSB.

Кор SSB. Это корреляционый шумопонижающий фильтр для SSB. Речевой сигнал имеет меньшую автокорреляцию, чем телеграфный, так что результаты не так хороши, как в CW. Тем не менее увеличить на балл-другой отношение сигнал/шум вполне можно. Эффективен при слабых сигналах, а также при шумоподобных помехах. Кроме того, этот фильтр эффективно ослабляет "хвосты" от соседних по частоте SSB станций (правда, при условии, что они не громче основного сигнала).

Кор реж. Автоматический режекторный фильтр для SSB. В принципе, это тот же фильтр Кор CW1, но с инверсной логикой работы - все что фильтр Кор CW1 пропускает на выход, фильтр Кор реж вырезает из спектра обрабатываемого сигнала. Чрезвычайно эффективен против узкополосных, нестабильных по частоте помех. Например, если кто-то "ставит" на вашу частоту несущую и игриво покручивает ручку настройки туда-сюда (чтобы не вырезали простым режекторным фильтром), то корреляционный режектор справится с подавлением этой помехи.

Фильтры пользователя (Юзера 1 - 6). Окно конструирования

Кнопки "Юзера 1 - 6" включают настраиваемые пользователем фильтры. По умолчанию там установлено несколько фильтров, не совпадающих с описанными выше. Для изменения характеристик из списка в окошке "Фильтры юзера" выберите, какой (1-6) фильтр вы хотите настраивать, и нажмите кнопку "Констр". В открывшемся окне конструирования (рис. 2) в верхнем правом углу имеется такой же, как и в главном окне, панорамный индикатор спектра и такие же два окна управления им. Окно внизу слева показывает АЧХ включенного в данный момент фильтра. В окне "Тип" вы задаете тип конструируемого фильтра. Обратите внимание - дополнительно к готовым фильтрам в главном окне здесь вы можете создать простой (неадаптивный, фиксированный) режекторный фильтр.

Окно "Множит, шкалы" на самом деле задает частоту дискретизации (выборок) входного сигнала Fд и, следовательно, определяет верхнюю обрабатываемую частоту входного сигнала Fmax в соответствии с таблицей.

"Множит. шкалы"

Fд, (Гц)

Fmax, (Гц)

"нет"

11025

5512,5

"х2"

5512,5

2756

"хЗ"

3675

1837


Для уменьшения загрузки процессора имеет смысл выбирать наименьшую Fд (т. е. наибольший множитель шкалы). Но использование множителя "х2" возможно только в случае, если верхняя частота среза проектируемого фильтра ниже, чем 2,4 кГц, а "хЗ" - если ниже 1,6 кГц.

Установки ФВЧ, ФНЧ, полосовых и режекторных фильтров. Выберите желаемый тип фильтра в окне "Тип". В полях "Q", "Fнч", "Fвч", "Затухан", "Усил" задайте соответственно желаемые добротность, нижнее значение частоты среза фильтра, верхнее значение частоты среза (для ФВЧ и ФНЧ, поскольку у них одна частота среза, одно поле будет неактивно), затухание за полосой и усиление (обычно 1).

Теперь, нажав кнопку "ОК", вы создадите фильтр с заданными характеристиками. Если он вас устраивает - нажмите кнопку "Задать", и этот фильтр будет сохранен как соответствующий фильтр "Юзера". Обращаю внимание на то, что в поле "Затухан" не имеет смысла ставить значение затухания свыше 80 дБ. DSPFil позволяет реализовать и значительно более высокие значения, но динамический диапазон линейного входа звуковой карты составляет в лучшем случае 70 дБ (это для очень хороших карт, для большинства же распространенных - от силы 60 дБ), поэтому большее значение затухания приводит только к бесполезной загрузке процессора, но не к реальному улучшению подавления.

Установки корреляционных фильтров. В поле "Тип" выберите "Корреляц". Теперь вы можете установить следующие параметры:

• "Q" - добротность.

• "Задер" - число виртуальных отводов линии задержки сигнала. Допустимый диапазон значений 0...4096.

•".u" - скорость ответа. Допустимый диапазон значений 0,001 ...0,05.

• "Gm" - коэффициент формирования. Допустимый диапазон значений 0,998...0,9999.

Большее значение ц дает ускоренную реакцию фильтра, но замедленную сходимость его параметров к параметрам сигнала. Меньшие значения Gm приводят к быстрому снижению коэффициента передачи фильтра, когда входной сигнал отключен или мал. Это дает лучшее подавление шумов в паузах, но при сигнале с быстрыми QSB может привести к потере части сигнала. Чтобы избежать этого, установите флажок в поле АРУ, тогда DSPFil автоматически увеличивает уровень слабых входных сигналов.

Puc.2
Puc.2

Установка флажка в поле "режект" приводит к инверсной логике работы фильтра - он пропускает на выход только то, что ранее вырезал. Это режим корреляционного режекторного фильтра, предназначенного для вырезания из сигнала разнообразного относительно узкополосного коррелированного "мусора" (несущие, телетайп, CW), причем фильтр будет следить за изменениями параметров этого "мусора" и автоматически подстраиваться под них.

Сохранение и загрузка фильтров.

Если вы хотите сохранить параметры фильтра в отдельном файле (скажем, для дальнейшего использования или если вы спроектировали больше шести своих фильтров, и для них не хватает кнопок "Юзера 1 - 6"), то в окне конструирования, после установки всех параметров фильтра, вместо кнопки "Задать" нажмите кнопку "Сохранить", и параметры будут сохранены в файле с расширением *.def. Загрузка ранее сохраненных фильтров производится кнопкой "Открыть".

Недостатки DSPFil

1. Общий для всех DSP программ недостаток - задержка сигнала при обработке примерно на 0,5 с (зависит от производительности компьютера, полосы и добротности фильтра). Поэтому при настройке, особенно с узкополосным фильтром, возможны странноватые эффекты запаздывания, надо привыкнуть. Или настраиваться при выключенном DSPFil, а потом, определившись с принимаемой станцией, его включать. При передаче CW слушать самого себя при включенном DSPFil нельзя - попробуйте-ка работать ключом, слыша себя с запаздыванием в полсекунды! Поэтому для нормальной работы с DSPFil придется сделать простейший релейный коммутатор, который по сигналу ТХ с трансивера переключает наушники с выхода звуковой карты непосредственно на выход трансивера. Этим же коммутатором удобно отключать DSPFil.

2. Недостаток именно этой программы. В отличие от DSP blaster'a K6STI, в DSPFil нельзя одновременно включить несколько фильтров. Может работать или ФВЧ, или ФНЧ, или полосовой, или корреляционный следящий, или режекторный. А использовать все вместе или их определенную комбинацию нельзя. А иногда хочется иметь комбинацию фильтров.

Заключение

Описываемая программа - весьма мощный и гибкий инструмент цифровой обработки сигнала. Конечно, обработка на звуковой частоте - не предел мечтаний. Однако во многих фирменных трансиверах (570-й, 870-й) DSP обработка идет именно на аудиочастоте. Естественно, что DSP фильтрация не панацея от всех бед - уже искаженные в аналоговом тракте трансивера сигналы, "обогащенные" комбинационными спектральными составляющими, DSPFil (как и любая DSP) очистить не в силах. Поэтому необходима хорошая линейность приемника.

Тем не менее даже с упомянутыми ограничениями, программа DSPFil очень полезна на практике. Во многих случаях она позволяла мне "вытащить" из шумов и помех те сигналы, которые без нее вряд ли были бы приняты.


Радио 11/2001, с.63-65.