динамический диапазон и WSJT-X
сейчас между разработчиками идет дискуссия в которой даются интересные цифры:
- динамический диапазон 16-битного АЦП примерно 90 дБ
- динамический диапазон 16-битного цифрового потока между SDR и центральным процессором компьютера примерно 90 дБ,
этой же разрядностью определяется динамический диапазон самого софта WSJT-X
- динамический диапазон выходного уровня аналогового приемника при выключенной АРУ не превышает 60 дБ над собственным шумом (выше уровней разработчики не наблюдали, мое мнение что при уровнях 60 дБ над собственным шумом у всех аналоговых приемников при выключенной АРУ каскады УНЧ входят в насыщение)
- когда мы в WSJT-X ставим ползунок по уровню шума на 30дБ(середина) то мы имеем еще 60 дБ запас динамического диапазона для сильных сигналов
- ползунок уровня входного сигнала WSJT-X никак не влияет на работу самого декодера, за исключением крайних случаев - когда сигнал по уровню близок к ошибке квантования, либо когда сильные сигналы попадают на верхнюю границу динамического диапазона АЦП или WSJT-X.
Из того что говорят разработчики можно сделать вывод, что, аналоговые приемники не могут полностью использовать динамический диапазон АЦП и WSJT-X, в то время как SDR с цифровым аудио потоком 16-бит хорошо согласуются по динамическому диапазону с 16-битным WSJT-X (АЦП звуковой карты в этом случае не используется) при малых уровнях шума с антенны, и не выбирают полностью динамический диапазон WSJT-X при высоких уровнях шума с антенны(за счет установки ползунка входного уровня WSJT-X по шуму на середину шкалы/30дБ).
При высоком уровне шума с антенны, -80дБм - вариант четвертьволнового вертикала на 40м диапазон в городе, аналоговый приемник с выключенной АРУ не имеет запаса по динамическому диапазону для более сильных чем шум сигналов. SDR с цифровым аудио потоком при таких условиях имеет запас динамического диапазона примерно 35 дБ.
декодирование в три прохода в WSJT-X
По затраченному времени на декодирование будет приемлемо работать:
- на компьютерах с мощным центральным процессором и аналоговым приемником только на слабых сигналах
- на компьютерах с мощным центральным процессором и SDR приемником c цифровым аудио потоком.
Для включения третьего прохода (в конфигурации выбора пользователем два или три прохода) в исходном коде делаются следующие изменения:
-----
исходник configuration.ui
строка 2188
<string>Two-pass decoding</string>
меняем на строку
<string>Three-pass decoding</string>
-----
исходник mainwindow.cpp
строка 1786, 1787 (в последнем релизе может быть 1790, 1791)
меняем строки
dec_data.params.n2pass=1;
if(m_config.twoPass()) dec_data.params.n2pass=2;
на строки
dec_data.params.n2pass=2;
if(m_config.twoPass()) dec_data.params.n2pass=3;
-----
исходник jt65_decode.f90
строки 101-108
if(ipass.eq.1) then !first-pass parameters
thresh0=2.5
nsubtract=1
elseif( ipass.eq.2 ) then !second-pass parameters
thresh0=2.5
nsubtract=0
endif
if(n2pass.lt.2) nsubtract=0
меняем на строки
if(ipass.eq.1) then !first-pass parameters
thresh0=2.4
nsubtract=1
elseif( ipass.eq.2 ) then !second-pass parameters
thresh0=1.0
nsubtract=1
elseif( ipass.eq.3 ) then !third-pass parameters
thresh0=1.0
nsubtract=0
endif
! if(n2pass.lt.2) nsubtract=0
-----
компилируем полученный релиз, тестируем
Результаты тестирования декодирования с тремя проходами
Цитата:
Сообщение от
UA3DJY
Изменение исходного кода, которое сделал Steve K9AN в r6387, привело к увеличению количества декодированных сигналов.
В варианте файлов записанных с SDR ANAN-10 при выключенной АРУ:
пороги первого/второго прохода
2.5/2.5 r6373 1069 декодирований, r6387 1076 декодирований
2.4/1.0 r6373 1094 декодирований, r6387 1110 декодирований
Цитата:
Сообщение от
UA3DJY
удалось добиться преимущества в работе FTRSD над SFRSD:
r6373mod 3188 правильных декодирований + 4 ложных
r6373 3054 правильных декодирований + 4 ложных
r6229 3169 правильных декодирований + множество ложных
Чтобы самостоятельно настроить FTRSD декодер на КВ необходимо в файле jt65_decode.f90 изменить:
строка 102 , порог первого прохода вместо 2.5 ставим 2.4
строка 105 , порог второго прохода вместо 2.5 ставим 1.8
файлы записанные с SDR c выключенной АРУ (отсутствуют нелинейные искажения) - 1152 декодирований
файлы записанные с web SDR с включенной АРУ - 3322 декодирований
Для тестирования декодирования в три прохода использовались следующие пороги проходов:
первый 2.4
второй 1.0
третий 1.0
Результат можно сравнить с приведенными выше в кавычках, использовались те же наборы звуковых файлов.
декодирование в три прохода в WSJT-X
Внизу еще небольшое дополнение к предыдущей процедуре, на функционал декодирования не влияет, но позволяет правильно отобразить имя третьего прохода в файле WSJT-X.ini .
Если процессор по времени декодирования не тянет три прохода, то, убрав галочку Three-Pass в закладке Advanced, переводим декодирование на два прохода.
Все тесты выполнялись при Random Erasure Patterns = 8, Agressive decoding level = 0, JT65+JT9, в результатах только JT65 декодирования.
-----
исходник configuration.cpp
строка 1302 меняем строку
twoPass_ = settings_->value("TwoPass",true).toBool ();
на строку
twoPass_ = settings_->value("ThreePass",true).toBool ();
строка 1402 меняем строку
settings_->setValue ("TwoPass", twoPass_);
на строку
settings_->setValue ("ThreePass", twoPass_);
-----
Вложений: 1
определение номера прохода в декодированиях
достаточно просто - по возрастанию частоты декодированных сигналов JT65 (на частоты JT9 не смотрим)
например в этой картинке
Вложение 156570
Первый проход заканчивается декодированием RV9DC, второй проход начинается декодированием PD7RF и заканчивается декодированием ON3CQ, и последние три декодирования на картинке это уже третий проход.
Многопроходное декодирование используется только для JT65.
После каждого прохода в софте выполняется вычитание из общего спектра декодированных сигналов и оставшийся после вычитания спектр подается на очередной последующий проход. Поэтому мы в третьем проходе видим новые декодирования, которые софт не смог распознать кандидатами либо не смог декодировать в первых двух проходах.
Использование трех проходов очень эффективно для простого мониторинга диапазона со спотами в Интернет, в этом случае неважно сколько времени занимает декодирование, если оно продолжается менее одной минуты.
В принципе ничто не мешает сделать 4 или 5 проходов - ограничение исключительно производительностью центрального процессора компьютера.