Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Устранение влияния длинного эха в COFDM
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Wasja
При разработке DVB-T приемника столкнулись с проблемой при работе с длинным мощным эхо-сигналом.
Необходимо обеспечить работоспособность приемника DVB-T при наличии эхо-сигнала такой же мощности (0 dB эхо) как основной сигнал, задержанного на время до 0,95 длины защитного интервала и не вносящего поворота фазы (0 градусов в центре канала). Для режима 2k максимальный сдвиг составляет 486,4 отсчета (при длине защитного интервала 1/4), для режима 8k – 1945,6 отсчетов.
Для коррекции частотной характеристики канала используется интерполяция значений пилотных несущих. Для DVB-T, собрав данные по 4 последовательным символам, можно получить 569 равномерно расположенных пилотных несущих, что теоретически позволяет исправить воздействие эха сигнала со сдвигом до 341,333 отсчетов для 2k и до 1365,333 отсчетов для 8k. В реальности максимальное значение ниже и зависит от способа интерполяции. Таким образом, этим способом компенсация воздействия максимально сдвинутого эхо-сигнала невозможна.
Может ли сообщество подсказать в какую сторону двигаться для решения этой проблемы?
petrov
Цитата(Wasja @ Dec 5 2011, 17:25) *
Может ли сообщество подсказать в какую сторону двигаться для решения этой проблемы?


А нужно ли? Ведь параметры модуляции и помехоустойчивого кодирования выбираются исходя из модели канала. Вы берёте с потолка какой-то зверский канал, посмотрите его АЧХ, каждая четвёртая поднесущая будет насмерть задавлена спектральным нулём, помехоустойчивый код справится с таким количеством ошибок?
Fast
если только в установке второй антенны, отстоящей на несколько длин волн, и сужении их диаграмм направленности
Wasja
Цитата(petrov @ Dec 6 2011, 15:33) *
А нужно ли? Ведь параметры модуляции и помехоустойчивого кодирования выбираются исходя из модели канала. Вы берёте с потолка какой-то зверский канал, посмотрите его АЧХ, каждая четвёртая поднесущая будет насмерть задавлена спектральным нулём, помехоустойчивый код справится с таким количеством ошибок?

Нужно. Стандарт NorDig сказал, что приемник должен работать в таких условиях, никуда не денешься.

Цитата(Fast @ Dec 7 2011, 06:43) *
если только в установке второй антенны, отстоящей на несколько длин волн, и сужении их диаграмм направленности

Есть готовые решения, которые обходятся одной антенной.
Fast
Цитата(Wasja @ Dec 7 2011, 09:30) *
Есть готовые решения, которые обходятся одной антенной.
именно в этих условиях, максимально сдвинутого эха на 0.95 защитного интервала ?
Wasja
Цитата(Fast @ Dec 7 2011, 08:56) *
именно в этих условиях, максимально сдвинутого эха на 0.95 защитного интервала ?

Да, проверяли на генераторе. Насколько можно понять по скудным данным - используется какой-то продвинутый программный алгоритм, завязанный на сдвигах исходного сигнала. В даташите этот вопрос не рассматривается.

PS. Микросхема демодулятора - STV0362.
Fast
предполагаю, что используется метод компенсации эха и коррекции АЧХ не на основе пилот-сигналов
а на основе адаптивного фильтра, обучаемого на защитных интервалах
чую, но сформулировать в алгоритмах пока не могу
Wasja
Цитата(Fast @ Dec 7 2011, 10:13) *
предполагаю, что используется метод компенсации эха и коррекции АЧХ не на основе пилот-сигналов
а на основе адаптивного фильтра, обучаемого на защитных интервалах
чую, но сформулировать в алгоритмах пока не могу

По-моему защитные интервалы на 95% своей длины будут замусорены эхом предыдущего символа, чему там можно будет обучить фильтр?
Fast
Цитата(Wasja @ Dec 7 2011, 14:46) *
По-моему защитные интервалы на 95% своей длины будут замусорены эхом предыдущего символа, чему там можно будет обучить фильтр?
что собой представляют защитные интервалы для DVB-T, повторение начала символа (типично для ОФДМ) или пауза ?
Wasja
Цитата(Fast @ Dec 7 2011, 20:52) *
что собой представляют защитные интервалы для DVB-T, повторение начала символа (типично для ОФДМ) или пауза ?

Повторение конца символа, вставленное перед символом.
alex_os
Цитата(Wasja @ Dec 5 2011, 16:25) *
Может ли сообщество подсказать в какую сторону двигаться для решения этой проблемы?


Можно сделать рассчитав импульсную характеристику (ИХ) канала во временной области.

1) В частотной области находим передаточную характеристику (ПХ) канала H для частот на
которых пилоты, для частот где нет пилотов H(i) = 0.

2) Далее считаем ИХ во временной области h = ifft(H).

3) В h оставляем только то что соответствует задержкам меньшим чем защитный интервал,
все остальное обнуляем.

4) Возвращаемся в частотную область и получаем интерполированную ПХ канала
H = fft(h).

p.s. Только ошибка получается значительная на краях спектра сигнала, из-за эффекта Гибсона sad.gif.
Fast
Мэла. Гибсона..
и получим H(или h) от суммы сигналов, с которой потом неизвестно что делать


Цитата(Wasja @ Dec 7 2011, 13:46) *
По-моему защитные интервалы на 95% своей длины будут замусорены эхом предыдущего символа, чему там можно будет бучить фильтр?
обучать по 5% незамусоренным, но на N-символах
alex_os
Цитата(Fast @ Dec 9 2011, 11:02) *
Мэла. Гибсона..
и получим H(или h) от суммы сигналов, с которой потом неизвестно что делать


обучать по 5% незамусоренным, но на N-символах


Не понял какой суммы? С H понятно что делать. Поэлементно инвертировать и умножить на выход fft. И дальше на демодулятор.
А адаптивный фильтр какой? Типа LMS и где он находится ? До FFT ? И как его обучать?
petrov
Цитата(alex_os @ Dec 9 2011, 15:14) *
Поэлементно инвертировать и умножить на выход fft. И дальше на демодулятор.


ИМХО для такого канала линейного эквалайзера недостаточно, нечего там в спектральных нулях инвертировать, и помехоустойчивый код с таким количеством ошибок не справится, нужен запас по шуму и эквалайзер типа DFE, только от простоты OFDM ничего не остаётся.
Wasja
Цитата(alex_os @ Dec 8 2011, 15:48) *
Можно сделать рассчитав импульсную характеристику (ИХ) канала во временной области.

1) В частотной области находим передаточную характеристику (ПХ) канала H для частот на
которых пилоты, для частот где нет пилотов H(i) = 0.

2) Далее считаем ИХ во временной области h = ifft(H).

3) В h оставляем только то что соответствует задержкам меньшим чем защитный интервал,
все остальное обнуляем.

4) Возвращаемся в частотную область и получаем интерполированную ПХ канала
H = fft(h).

p.s. Только ошибка получается значительная на краях спектра сигнала, из-за эффекта Гибсона sad.gif.

Благодарю. Попробую просимулировать эту методику в матлаб.
Fast
Цитата(alex_os @ Dec 9 2011, 14:14) *
Не понял какой суммы? С H понятно что делать. Поэлементно инвертировать и умножить на выход fft. И дальше на демодулятор. А адаптивный фильтр какой? Типа LMS и где он находится ? До FFT ? И как его обучать?
не-не, простой коррекцией АЧХ и ФЧХ не обойтись, нужно именно компенсировать влияние эхо-сигнала, который является тем же самым сигналом что и передавался, только задержанным на dt и "умноженным" на H

у меня сейчас просто нет времени смоделировать весь процесс, хотя задачка очень интересная и важная
в двух словах:
для конца символа имеем Sx = S0*H0 + Se*He
где S0 - исходный сигнал, H0 - передаточная характеристика канала для сигнала
где Se - сигнал эха, He - передаточная характеристика эха

для повторения конца символа, где 5% остаток без эха: Sy = S0*H0


Sx = S0*H0 + Se*He
Sy = S0*H0

Se*He - (Sx - Sy) = 0

Se = S0(-dT)
S0(-dT)*H` - (Sx - Sy) = err

необходимо обучить H` для err => 0. сколько потребуется OFDM-символов зависит от С/Ш и уровня эха
h`(t) = h`(t-1) + err*k;


Sx и Sy - это, соотв, 5% фрагменты символа, которые повторяется в конце, т.е. Sx - с эхом, Sу - без
alex_os
Все должно работать!

1) Не 1/4 поднесущих полностью обнулится а гораздо меньшее количество, естественно
подразумевается что SNR очень велик.

2) FEC 1/2 модуляция QPSK.

Здесь код
Нажмите для просмотра прикрепленного файла

2 Fast.

Т.е. Вы предлагаете построить линейный фильтр который выделит эхо и потом это эхо вычесть из сигнала?
В этом случае ничего хорошего не получится. Что будет представлять из себя АЧХ такого фильтра? Это будет
что-то вроде инверсии AЧХ канала. Соответственно если в спектре нули ....



Wasja
Цитата(Fast @ Dec 9 2011, 16:56) *
у меня сейчас просто нет времени смоделировать весь процесс, хотя задачка очень интересная и важная
в двух словах:
для конца символа имеем Sx = S0*H0 + Se*He
где S0 - исходный сигнал, H0 - передаточная характеристика канала для сигнала
где Se - сигнал эха, He - передаточная характеристика эха

для повторения конца символа, где 5% остаток без эха: Sy = S0*H0


Sx = S0*H0 + Se*He
Sy = S0*H0

Se*He - (Sx - Sy) = 0

Se = S0(-dT)
S0(-dT)*H` - (Sx - Sy) = err

необходимо обучить H` для err => 0. сколько потребуется OFDM-символов зависит от С/Ш и уровня эха
h`(t) = h`(t-1) + err*k;

Sx и Sy - это, соотв, 5% фрагменты символа, которые повторяется в конце, т.е. Sx - с эхом, Sу - без

Возможно я не совсем корректно выразился, но эхо в сигнале присутствует всегда.

Нажмите для просмотра прикрепленного файла

Поэтому на этих 5% это будет не чистый сигнал - а сумма основного и эхо сигналов одного символа (Si). А на 95% - сумма разных символов - основной сигнал символ Si+1, эхо-сигнал символ Si.
Т.е. частотная характеристика этих 5% защитного интервала не будет отличатся от частотной характеристики в самом символе.
Fast
Цитата(alex_os @ Dec 9 2011, 18:32) *
Т.е. Вы предлагаете построить линейный фильтр который выделит эхо и потом это эхо вычесть из сигнала?
В этом случае ничего хорошего не получится. Что будет представлять из себя АЧХ такого фильтра? Это будет
что-то вроде инверсии AЧХ канала. Соответственно если в спектре нули ....
это будет линейный фильтр, через который пропускается S(t-dT), и вычитается из S(t)
S`(t) = S(t) - S(t-dT)*H`
будет ли это "что-то вроде инверсии АЧХ канала" - сомневаюсь


Цитата(Wasja @ Dec 12 2011, 10:23) *
Поэтому на этих 5% это будет не чистый сигнал - а сумма основного и эхо сигналов одного символа (Si). А на 95% - сумма разных символов - основной сигнал символ Si+1, эхо-сигнал символ Si.
Т.е. частотная характеристика этих 5% защитного интервала не будет отличатся от частотной характеристики в самом символе.
тогда нужен другой критерий для минимизации ошибки. например, С/Ш.
точную эхо-задержку можно найти по АКФ
далее решать
S`(t) = S(t) - S(t-dT)*h`
snr->max

решение где-то рядом, только надо упорно ковырять

p.s.
Wasja , Вы уже попробовали способ , предложенный alex_os ?
alex_os
Цитата(Fast @ Dec 12 2011, 10:05) *
это будет линейный фильтр, через который пропускается S(t-dT), и вычитается из S(t)
S`(t) = S(t) - S(t-dT)*H`


Я правильно понимаю что?
S(t) - принятый сигнал
S'(t) - oценка эха.
Fast
Цитата(alex_os @ Dec 12 2011, 11:22) *
Я правильно понимаю что?
S(t) - принятый сигнал
S'(t) - oценка эха.

S(t) - принятый сигнал
S'(t) - очищенный от эха
S(t-dT)*H` - оценка эха
alex_os
Цитата(Fast @ Dec 12 2011, 10:26) *
S(t) - принятый сигнал
S'(t) - очищенный от эха
S(t-dT)*H` - оценка эха


Хорошо, в спектральной области имеем на входе канала имеем Sx(jw)
На выходе канала S(jw) = Sx(jw)*(1+exp(-1jw*delay)), тогда
H(jw) = Sx(jw) * exp(-1jw*delay) / S(jw) = exp( -1j*w*delay ) / ( 1+exp(-1j*w*delay) ).

Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте sm.gif.
Fast
Цитата(alex_os @ Dec 12 2011, 11:42) *
Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте sm.gif.
ну и что, в радиоканале вечная проблема вытянуть спектральные нули. просто не надо делить на ноль sm.gif
т.е. это уже совсем другая проблема
alex_os
Цитата(Fast @ Dec 12 2011, 11:03) *
ну и что, в радиоканале вечная проблема вытянуть спектральные нули. просто не надо делить на ноль sm.gif
т.е. это уже совсем другая проблема

Т.е Вы настаиваете на том, что возможен другой, лучший чем традиционный способ декодированая OFDM sm.gif ?
Wasja
Цитата(Fast @ Dec 12 2011, 10:05) *
Wasja , Вы уже попробовали способ , предложенный alex_os ?

В процессе. Но при QAM-64 результат не радует.
Прикидываю возможность повышения точности при усреднении частотных оценок.

Для 2k-точек (используется 1705 несущих), режим модуляции QPSK после второго исправления получается такая картинка, длина эха 0,95 защитного интервала:
Нажмите для просмотра прикрепленного файла
(синий - реальная составляющая спектра, красный - мнимая).

При меньших сдвигах эха - картинки получаются красивее.
alex_os
Цитата(Wasja @ Dec 12 2011, 12:07) *
В процессе. Но при QAM-64 результат не радует.

При меньших сдвигах эха - картинки получаются красивее.


А Вы звездочку так нарисуйте нагляднее будет.
Код
        plot(x, 'х');


Вообще наилучший метод оценки канала считается MMSE. Только он сильно затратный в вычислительном плане.
Нажмите для просмотра прикрепленного файла
Wasja
Цитата(alex_os @ Dec 12 2011, 12:21) *
А Вы звездочку так нарисуйте нагляднее будет.

Можно и звездочку:
Нажмите для просмотра прикрепленного файла

Цитата(alex_os @ Dec 12 2011, 12:21) *
Вообще наилучший метод оценки канала считается MMSE. Только он сильно затратный в вычислительном плане.

Дойдет время и до оценки, пока бы функционал проверить...
alex_os
Цитата(Wasja @ Dec 12 2011, 13:21) *


FEC справляется с ошибками?
Wasja
Цитата(alex_os @ Dec 12 2011, 10:42) *
Хорошо, в спектральной области имеем на входе канала имеем Sx(jw)
На выходе канала S(jw) = Sx(jw)*(1+exp(-1jw*delay)), тогда
H(jw) = Sx(jw) * exp(-1jw*delay) / S(jw) = exp( -1j*w*delay ) / ( 1+exp(-1j*w*delay) ).

По-моему вернее так:
H(jw) = S(jw) / Sx(jw) = Sx(jw)*(1+exp(-1jw*delay)) / Sx(jw) = 1+exp(-1jw*delay)
Исправление тогда будет осуществляться по формуле:
Sx(jw) = S(jw) / H(jw) = S(jw) / ( 1+exp(-1j*w*delay) )
Соотвественно, точность такого исправления целиком и полностью будет зависеть от точности определения "delay" - небольшой сдвиг даст нелинейные искажения.
К тому же вопрос как такое исправление поведет себя при наличии нескольких эхо сигналов (меньшей мощности).

Цитата(alex_os @ Dec 12 2011, 10:42) *
Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте sm.gif.

Да, они везде вылазят. fman.gif
alex_os
Цитата(Wasja @ Dec 12 2011, 13:36) *
По-моему вернее так:
H(jw) = S(jw) / Sx(jw) = Sx(jw)*(1+exp(-1jw*delay)) / Sx(jw) = 1+exp(-1jw*delay)
Исправление тогда будет осуществляться по формуле:
Sx(jw) = S(jw) / H(jw) = S(jw) / ( 1+exp(-1j*w*delay) )
Соотвественно, точность такого исправления целиком и полностью будет зависеть от точности определения "delay" - небольшой сдвиг даст нелинейные искажения.
К тому же вопрос как такое исправление поведет себя при наличии нескольких эхо сигналов (меньшей мощности).


Да, они везде вылазят. fman.gif


Все правильно, природу не обманешь!
Если какая-то несущая в результате фединга просела глубоко под шум, то никак
ее не восстановить. Остается только правильно посчитать значения мягких метрик
для данной несущей, чтобы влияние ее на процесс декодирования ПУ кода, было не велико.
Fast
Цитата(alex_os @ Dec 12 2011, 13:04) *
Т.е Вы настаиваете на том, что возможен другой, лучший чем традиционный способ декодированая OFDM sm.gif ?
да вообще-то они все традиционные, даже демодулятор(корректор) Витерби
и в данном случае, когда мощность эха сопоставима с сигналом, смотрю, что-то не очень подходит это "традиционное"..

alex_os
Цитата(Fast @ Dec 12 2011, 16:52) *
да вообще-то они все традиционные, даже демодулятор(корректор) Витерби
и в данном случае, когда мощность эха сопоставима с сигналом, смотрю, что-то не очень подходит это "традиционное"..

Ну если эхо сопоставимо с сигналом значит усе плохо и природу не обманешь ни традиционными способами ни тем более альтернативными..
Что касается ОFDM то максимально правдоподобная (MLSE )оценка переданного символа совпадает с самым прямолинейным и традиционным
способом. Т.е. на входе IFFT передатчика имеется вектор столбец sx, каждый элемент этого вектора это одна из точек сигнального
созвездия QPSK или QAM. На приемном конце после FFT мы имеет вектор s и измеренную (или полученную путем интерполяции)
передаточную характеристику канала H(квадратная матрица,у которой только диагональные элементы ненулевые). Наилучшая (максимально
правдоподобная ) оценка sx, это sx_est, которая минимизируем квадрат ошибки e2 = (s - H*sx_est)' *(s - H*sx_est).
Т.е. другими словами алгоритм, вроде найти H, найти inv(H), умножить inv(H) на s, и результат подать на slicer есть оптимальный и ничего лучше быть
не может.
Serg76
Цитата(alex_os @ Dec 12 2011, 23:23) *
Т.е. другими словами алгоритм, вроде найти H, найти inv(H), умножить inv(H) на s, и результат подать на slicer есть оптимальный и ничего лучше быть
не может.

вроде как может быть, - турбоэквалайзеры. в отличие от метода максимального правдоподобия (минимум вероятности ошибки для всей последовательности) дают минимум вероятности ошибки на каждый символ, но ресурсов требуется поболе.
alex_os
Цитата(Serg76 @ Dec 12 2011, 22:33) *
вроде как может быть, - турбоэквалайзеры. в отличие от метода максимального правдоподобия (минимум вероятности ошибки для всей последовательности) дают минимум вероятности ошибки на каждый символ, но ресурсов требуется поболе.

Дык, какие тут могут быть турбоэквалайзеры для ОFDM ? Все несущие ортогональны... Символы соседние ни как не влияют друг на друга.
Т.е. что MLSE что MAP будет выглядеть вроде- берем i-ю поднесующую берем какие-то статистики для этой поднесущей и что-то со всем этим делаем,
все остальные поднесущие с номером отличным от i на этот процесс не влияют.. Хотя, с Вами согласен что MAP - это то самое чем нужно считать LLR для последующего декодирования FEC декодерами.

ps можно придумать фантастический вариант и как-то использовать энергию содержащуюся в защитном интервале, но ясно , что получится что-то
сложное а эффект будет почти не заметный.
Serg76
Цитата(alex_os @ Dec 12 2011, 23:05) *
все остальные поднесущие с номером отличным от i на этот процесс не влияют.. Хотя, с Вами согласен что MAP - это то самое чем нужно считать LLR для последующего декодирования FEC декодерами.

формально да, а как там будет, даже не знаю? как раз и имел ввиду, что схема FEC должна быть завязана (согласована) с демодуляцией, может и будет какая польза от итеративного эквалайзинга.
polyakovav
Главная проблема с длинным эхом - временная синхронизация.
По пилотам и TPS можно построить профиль многолучевости, а по нему вычислить сдвиг и параметры канала.
Wasja
Цитата(polyakovav @ Dec 13 2011, 08:07) *
Главная проблема с длинным эхом - временная синхронизация.

Вы о захвате начала символа?

Цитата(polyakovav @ Dec 13 2011, 08:07) *
По пилотам и TPS можно построить профиль многолучевости, а по нему вычислить сдвиг и параметры канала.

Можно чуть поподробнее про построение таких профилей? Или посоветуйте литературу для изучения.
Но в целом, по-моему, TPS применить сложно, поскольку несущие TPS модулируются DBPSK, т.е. их ожидаемая фаза не известна (0 или Pi), только амплитуда.
polyakovav
Да, о начале блока БПФ.
Подробно не могу - не математик.
Профиль строится в виде матрицы с усреднением на интервале 1 фрейма для 8к, 2 фрейма для 4к, 4 фрейма для 2к.
TPS тоже используются, поскольку исходная модуляция синхронная и смещение фаз извлечь можно.


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.